快速排序

简单介绍下

快速排序是比较排序的一种,其核心思想是在序列中随便找一个数为基准数,首先从右向左遍历,找到比基准数小的数,定位在当前索引(设为 j),再从左向右遍历,找到比基准数大的数,定位索引(设为i),交换索引 j 和索引 i 指向的值。这时右边从 j 开始,左边从 i 开始,重复上诉步骤,直到 i = j。基准值与索引i指向的值交换。再次递归调用。

不会画图,太费劲了,上代码吧。

static void quicksort(int left,int right,int[] array){
        int i,j,datum,temp;
        if(left>right)
            return;
        datum = array[left];
        i = left;j = right;
        while(i!=j){
            //从右向左找比基准数小的数
            while(array[j]>=datum && i//从左向右找比基准数大的数
            while(array[i]<=datum && i//交换两个数在数组中的位置
            if(i//在哨兵i和哨兵j相遇之前
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
        //将基准数归位
        array[left] = array[i];
        array[i] = datum;
        //递归调用
        quicksort(left, i-1, array);  //继续处理array[i]左边的。
        quicksort(i+1, right, array);  //继续处理array[i]右边的
    }

你可能感兴趣的:(快速排序,算法,排序)