美文网首页
排序算法之快速排序 java实现

排序算法之快速排序 java实现

作者: 5d44bc28b93d | 来源:发表于2017-06-14 09:27 被阅读22次

    快速排序.png

    如上图所示:给定数组序列【8,7,15,5,20】,
    1.首先挖坑用temp保存数字数组0位置的数据8,使用两个标志位i ,j。
    2.将j向左移动查找小于temp的数据并将其填充到i的位置(挖坑填数),此时将i向前移动一位(i++)。
    3.将i向右查找大于temp值的数据,只要查询到大于temp的数据将数据填充到j的位置。同时j向后移动一位(j--)
    4.重复进行2,3步骤直到i不小于j则成功将数据分成两部分大于temp的在右边,小于temp的在左边
    5.接着又将数据分成左右两份进行 1,2,3,4步骤(分治),递归调用,直到被拆分的数据开始位置与结束位置相等则结束
    注 上图只画出了一个部分的流程并不完整。

    快速排序java实现


       public static void  quickSort(int[] num,int start,int end){
            //如果开始位置大于或等于最终位置则直接返回
            if(start>=end) return;
            int i,j;
            i=start;j=end;
            //挖坑记录第一个位置的值num[i]
            int temp=num[i];
            while(i<j){
                //从坑的右边往左查找大于坑内数据的位置
                while(i<j&&num[j]>=temp) j--;
                if(i<j){
                    //填补坑,同时j的位置出现新坑
                    num[i]=num[j];
                    i++;
                }
                //从i的左往右查找小于temp的值
                while(i<j&&num[i]<=temp) i++;
                if(i<j){
                    num[j]=num[i];
                    j--;
                }
            }
            num[j]=temp;
            quickSort(num, start, i - 1);//递归调用
            quickSort(num, i + 1, end);//递归调用
    
        }
    

    相关文章

      网友评论

          本文标题:排序算法之快速排序 java实现

          本文链接:https://www.haomeiwen.com/subject/whifattx.html