10 快速排序-左右指针法

void QuickSort(int *arr, int begin, int end)
{
        if (begin >= end)
        {
                return;
        }
        int left = begin;
        int  right = end;
        int key = begin;
        while (begin < end)
        {
                while (end>begin && arr[end] >= arr[key])
                {
                        --end;
                }

                while (end>begin && arr[begin] <= arr[key])
                {
                        ++begin;
                }

                swap(arr[begin], arr[end]);
        }

        swap(arr[end], arr[key]);
        key = end;
        QuickSort(arr, left, key - 1);
        QuickSort(arr, key + 1, right);
}
 

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