51Testing软件测试论坛

标题: 一个快速排序,有错误,应该怎么改啊,感谢指正 [打印本页]

作者: 测试积点老人    时间: 2020-8-14 10:56
标题: 一个快速排序,有错误,应该怎么改啊,感谢指正
  1. #include
  2. #include
  3. #include
  4. #define MAXSIZE 100

  5. typedef struct Student{
  6. char no[20];// 学号
  7. char name[20];// 姓名
  8. int price;// 成绩
  9. }Student;
  10. int sum=0;

  11. typedef struct{
  12. Student elem[MAXSIZE];//线性表占用的数组空间
  13. int last;//最后一个元素的下标
  14. }SeqList;

  15. //快速排序(学号)

  16. int Partition(SeqList &L,Student a[],int low,int high)
  17. {
  18. a[0]=a[low];
  19. int pivotkey=a[low].no;
  20. while(low {
  21. while(low=pivotkey) --high;
  22. a[low]=a[high];
  23. while(low<high&&a[low].no<=pivotkey) ++low;
  24. a[high]=a[low];
  25. }
  26. a[low]=a[0];
  27. return low;
  28. }

  29. void QSort(Student a[],int low,int high)
  30. {
  31. if(low<high){
  32. int pivotloc=Partition(L,a,low,high);
  33. QSort(L,a,low,pivotloc-1);
  34. QSort(L,a,pivotloc+1,high);
  35. }
  36. }
  37. void QuickSort(SeqList &L)
  38. {
  39. if(L.last<1)
  40. {
  41. printf("空表!");
  42. }
  43. Student a[MAXSIZE];//排序专用临时数组
  44. for(int i=1;i<=L.last;i++)
  45. a[i]=L.elem[i];
  46. QSort(L.elem,1,L.last);
  47. for(i=0;i<L.last;i++)
  48. {
  49. printf("学号:%s 姓名:%s 成绩:%d\n\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
  50. }
  51. printf("\n");
  52. }
复制代码



作者: Miss_love    时间: 2020-8-17 08:33
支持一下




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2