您的位置:首页 > 理论基础 > 数据结构算法

java-数据结构——快速排序

2016-12-05 15:41 232 查看

public static int partition(int []array,int lo,int hi){

        //固定的切分方式

        int key=array[lo];

        while(lo<hi){

            while(array[hi]>=key&&hi>lo){//从后半部分向前扫描

                hi--;

            }

            array[lo]=array[hi];

            while(array[lo]<=key&&hi>lo){从前半部分向后扫描

                lo++;

            }

            array[hi]=array[lo];

        }

        array[hi]=key;

        return hi;

    }

   

    public static void sort(int[] array,int lo ,int hi){

        if(lo>=hi){

            return ;

        }

        int index=partition(array,lo,hi);

        sort(array,lo,index-1);

        sort(array,index+1,hi);

    }

快速排序的时间复杂度为O(NlogN)

对于基准位置的选取一般有三种方法:固定切分,随机切分和三取样切分。固定切分的效率并不是太好,随机切分是常用的一种切分,效率比较高,最坏情况下时间复杂度有可能为O(N2).对于三数取中选择基准点是最理想的一种
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: