手撕 快排

//快速排序,递归操作,先找到枢纽,将所有比枢纽小的数放到其左边,将所有比其大的数放到其右边
void QuickSort(vector<int>& nums, int l, int r){
    if (l + 1 >= r)
        return;
    int x = l, y = r - 1, xnum = nums[x];
    while (x < y) {
        while (x < y && nums[y] >= xnum)
            y--;
        nums[x] = nums[y];
        while (x < y && nums[x] <= xnum)
            x++;
        nums[y] = nums[x];
    }
    nums[x] = xnum;
    QuickSort(nums, l, x);
    QuickSort(nums, x + 1, r);
}

 

posted @ 2023-09-13 16:36  SuperTonyy  阅读(10)  评论(0)    收藏  举报