51Testing软件测试论坛

标题: 数据结构 直接排序,有错误,应该怎么改,急 [打印本页]

作者: 测试积点老人    时间: 2020-8-13 11:47
标题: 数据结构 直接排序,有错误,应该怎么改,急
  1. ```int Partition(SeqList &L,Student a[],int low,int high)
  2. {
  3. a[0]=a[low];
  4. char pivotkey=a[low].no;
  5. while(low {
  6. while(low=pivotkey) --high;
  7. a[low]=a[high];
  8. while(low<high&&a[low].no<=pivotkey) ++low;
  9. a[high]=a[low];
  10. }
  11. a[low]=a[0];
  12. return low;
  13. }

  14. void QSort(SeqList &L,Student a[],int low,int high)
  15. {
  16. if(low<high){
  17. int pivotloc=Partition(L,a,low,high);
  18. QSort(L,a,low,pivotloc-1);
  19. QSort(L,a,pivotloc+1,high);
  20. }
  21. }
  22. void QuickSort(SeqList &L)
  23. {

  24. Student a[MAXSIZE];//排序专用临时数组
  25.    for(int i=1;i<=L.last;i++)
  26.        a[i]=L.elem[i];
  27.     QSort(L,a,1,L.last);
  28.     for(i=1;i<L.last;i++)
  29. {
  30.    printf("学号:%s 姓名:%s 成绩:%d\n\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);
  31. }
  32. printf("\n");

  33. }
复制代码



作者: 海海豚    时间: 2020-8-14 10:22
https://ask.csdn.net/questions/1084998  参考下
作者: bellas    时间: 2020-8-14 10:53
参考下这个链接https://zhidao.baidu.com/question/101879710.html
作者: 郭小贱    时间: 2020-8-14 13:56
while(low {
while(low=pivotkey) --high;
代码错乱了

int pivotloc=Partition(L,a,low,high);
这里调试下,分区是否正确

for(int i=1;i<=L.last;i++)
数组下标从0开始




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