码迷,mamicode.com
首页 > 编程语言 > 详细

算法系列之<快速排序>

时间:2018-10-12 01:15:56      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:nlogn   div   复杂度   []   static   nbsp   ++   temp   cas   

快速排序:

 /**
     * 快速排序
     * 最好情况下:每趟把原序列分成两个长度几乎相等的子序列
     * 最差情况下:每趟把原序列分成长度相差很大的两个子序列
     * 平均时间复杂度:O(NLogN),空间复杂度O(logN)
     * case1:{1}
     * case2:{1,2}
     * case3:{1,2,3,4,5}
     * case4:{5,4,3,2,1}
     * case5:{8,9,10,2,3}
     * @param array1
     * @param low
     * @param high
     * @return
     */
    public static void quickSort(int[] array1,int n,int low,int high){
        if(low<high&&low>=0&&low<n&&high>=0&&high<n) {
            int vot = array1[low];
            int i = low;
            int j = high;
            while(i<j) {
                while (j > i && array1[j] > vot) {
                    j--;
                }
                if (j > i) {
                    if (array1[j] < vot) {
                        int temp = array1[j];
                        array1[i] = temp;
                        i++;
                    }
                }

                while (i < j && array1[i] <= vot) {
                    i++;
                }
                if (i < j) {
                    if (array1[i] > vot) {
                        int temp = array1[i];
                        array1[j] = temp;
                        j--;
                    }
                }
            }
            if(i==j){
                array1[i]=vot;
            }


            quickSort(array1, array1.length,low, j - 1);
            quickSort(array1, array1.length,i + 1, high);
            }

    }

 

算法系列之<快速排序>

标签:nlogn   div   复杂度   []   static   nbsp   ++   temp   cas   

原文地址:https://www.cnblogs.com/zhaijing/p/9775748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!