图解排序算法(五)之快速排序

选取一个枢纽,使它左边的值都比它小,右边的值比它大。(假定选数组第一个元素值)

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上的方法:

猜你喜欢

转载自blog.csdn.net/Eartha1995/article/details/81707959