快速排序算法

来源:互联网 发布:淘宝舞帝商城 编辑:程序博客网 时间:2024/06/07 17:15
package sort;/** * QuickSort  * 快速排序算法:  * 基本思想: * 1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法) * 2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。 * 3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。 *  */public class QuickSort{    private int countStep = 0;    public void sort(int[] initData)    {        int len = initData.length;                q_sort(initData, 0, len-1);    }    private final void q_sort(int[] initData, int from, int to)    {        if (to - from < 1)        {            return;        }        int pivot = (from + to) / 2;        pivot = partion(initData, from, to, pivot);        q_sort(initData, from, pivot - 1);        q_sort(initData, pivot + 1, to);    }    private int partion(int[] initData, int from, int to, int pivot)    {        int temp = initData[pivot];        initData[pivot] = initData[to];        while (from != to)        {            while (from < to && initData[from] < temp)            {                from++;                countStep ++;            }            if (from < to)            {                initData[to] = initData[from];                to--;            }            while (from < to && initData[to] > temp)            {                to--;                countStep ++;            }            if (from < to)            {                initData[from] = initData[to];                from++;            }        }        initData[from] = temp;                return from;    }    public int showStep()    {        return countStep;    }}

0 0
原创粉丝点击