12 快速排序-前后指针法

void QuickSort(int *arr, int begin, int end)
{
    if(begin >= end)
    {   
        return;
    }   

    int cur = begin;
    int prev = begin - 1;
    int key = end;

    while(cur != end)
    {   
        while(arr[cur] < arr[key] && ++prev != cur)
        {   
            swap(arr[cur], arr[prev]);
        }   
     
        cur++;
    }   

    swap(arr[++prev], arr[key]);

    key = prev;

    QuickSort(arr, begin, key - 1); 
    QuickSort(arr, key + 1, end);
}
 

你可能感兴趣的:(代码,数据结构,算法,排序算法)