开发者社区> 问答> 正文

如何修改快速排序算法才能使其将输入元素按非增序排序

如何修改快速排序算法才能使其将输入元素按非增序排序

展开
收起
知与谁同 2018-07-21 16:33:13 3607 0
1 条回答
写回答
取消 提交回答
  • 静静的看着你们

    你指按降序排序。提供C语言的代码供参考 #include <stdio.h>
    void out(int a[], int n)
    {
     int i;
     for(i=0;i<n;i++)    
     {        
      printf("%d ",a[i]);   
     }    
    }
    void quicksort(int a[], int low, int high)
    {
     if (low >= high) return;
     int first = low;
     int last = high;
     int key = a[first];
     while (first<last)
     {
      while (first<last&&a[last] <=key) --last;
      a[first] = a[last];
      while (first<last&&a[first] >= key) ++first;
      a[last] = a[first];
     }
     a[first] = key;
     quicksort(a, low, first - 1);
     quicksort(a, first + 1, high);
    }
    void main()
    {
     int a[10]={34,3,29,63,70,16,85,82,90,93};
     quicksort(a,0,10);
     out(a,10);
    }

     

    这里 

    while (first<last&&a[last] <=key) --last;    //改为小于等于 ---- ( 1  )
      a[first] = a[last];
      while (first<last&&a[first] >= key) ++first;  //改为大于等于   ---(2 )
      a[last] = a[first];

     

    1、2两处大于小于换一下的话是增序


     

    2019-07-17 22:49:44
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载