1. 程式人生 > >圖解排序演算法(五)之快速排序

圖解排序演算法(五)之快速排序

選取一個樞紐,使它左邊的值都比它小,右邊的值比它大。(假定選陣列第一個元素值)

int Partition(int* array, int low, int high)
{
    int pivotkey;
    pivotkey = array[low];
    while(low < high)
    {
        while(low < high && array[high] > pivotkey)
            high--;
        swap(array, low, high);
        while(low < high && array[low] < pivotkey);
            low++;
        swap(array, low, high);
    }

    return low;
}

pivotkey不斷交換,low,high中必有一個是樞紐(low是樞紐時,比較high;當high是樞紐時比較low),從表的兩端交替向中間掃描。

劍指offer上的方法: