快速排序板子

好多年了,竟然没忘,蓝书上的,之后数据结构书又改一了版

    void quick_sort(vector<int>& nums, const int& k, int x, int y) {
        if (x >= y) return;

        int p = x, q = y;
        int stash = nums[x];
        while(p < q) {

            while(p < q && nums[q] >= stash) q--;

            while(p < q && nums[p] <= stash) p++;

            if (p < q) {
                swap(nums[p], nums[q]);
            }
        }
        swap(nums[x], nums[q]);

        quick_sort(nums, k, x, p - 1);
        quick_sort(nums, k, p + 1, y);
    }

快排找第k大

class Solution {
public:

    void quick_sort(vector<int>& nums, const int& k, int x, int y) {
        if (x >= y) return;

        int p = x, q = y;
        int stash = nums[x];
        while(p < q) {

            while(p < q && nums[q] >= stash) q--;

            while(p < q && nums[p] <= stash) p++;

            if (p < q) {
                swap(nums[p], nums[q]);
            }
        }
        swap(nums[x], nums[q]);
        if (p == nums.size() - k) {
            return;
        }
        else if (p > nums.size() - k) {

            quick_sort(nums, k, x, p - 1);
        } else {
            quick_sort(nums, k, p + 1, y);
        }
    }

    int findKthLargest(vector<int>& nums, int k) {

        quick_sort(nums, k, 0, nums.size() - 1);
        return nums[nums.size() - k];
    }
};

 

posted @ 2025-11-26 23:27  WTSRUVF  阅读(4)  评论(0)    收藏  举报