开发者社区> 问答> 正文

已知数组int[]max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组

已知数组int[]max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组

展开
收起
知与谁同 2018-07-15 16:06:48 2173 0
1 条回答
写回答
取消 提交回答
  • TA有点害羞,没有介绍自己...
    算法过程
      设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是:
      1)设置两个变量I、J,排序开始的时候:I=1,J=N;
      2)以第一个数组元素作为关键数据,赋值给X,即 X=A[1];
      3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换;
      4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换;
      5)重复第3、4步,直到 I=J;
    public static void main (String[] args)
    {
    QuickSort sort = new QuickSort();
    int array = {2,3,4,5,4,3,6};
    test.array = array;
    test.run();
    for(int i=0 ; i<length ; i ++)
    {
    Console.Write(test.array[i];);
    }
    }

    public class QuickSort()
    {
    public int[] array =null;

    public void run()
    {
    if(array== null )return;
    }

    private void sort(int lowest, int hightest )
    {
    if(loset<=0 || lowest >= hightest)
    {
    return;
    }

    keyData = array[lowest];
    keyIndex= 0;
    hight = hist
    low = lowlis;
    for( ; low <=hight; heiht--; low ++)
    {
    for(j= hight;j>low ;j--)
    {
    if(key > array[j])
    {
    swapLowHight(array[low], array[j] );
    keyIndex= j;
    break;
    }
    }

    for(i= low; i<hight ; i++)
    {
    if(key>array[i])
    {
    swapLowHight(array[low], array[keyIndex] );
    keyIndex= i;
    break;
    }
    }
    }
    sort( lowest,keyIndex-1);
    sort( keyIndex +1 , hight);

    }

    }
    2019-07-17 22:49:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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