无风无影

   ::  :: 新随笔  ::  ::  :: 管理

快速排序

空间复杂度:

 最优的情况下空间复杂度为:O(logn)  ;每一次都平分数组的情况

 最差的情况下空间复杂度为:O( n )      ;退化为冒泡排序的情况

时间复杂度:

快速排序的平均时间复杂度也是:O(nlogn)

快速排序最差的情况下时间复杂度为:O( n^2 )

快速排序最优的情况下时间复杂度为:O( nlogn )

 

 

private static void quickSort(int[] array,int low,int high){
        if(low<high){
            int index=getIndex(array,low,high);
            quickSort(array,0,index-1);
            quickSort(array,index+1,high);
        }
    }



    /**
     * 注意首先从后半部门开始排
     */
    private static int getIndex(int[] array,int low,int high){
        int tmp=array[low];
        while(low<high){
            while(low<high&&array[high]>tmp){
                high--;
            }
            array[low]=array[high];
            while(low<high&&array[low]<=tmp){
                low++;
            }
            array[high]=array[low];

        }
        array[low]=tmp;
        return low;
    }

 

posted on 2018-05-28 14:35  NWNS-无风无影  阅读(121)  评论(0)    收藏  举报