排序(严蔚敏版)

排序(严蔚敏版),第1张

排序(严蔚敏版)
    快排
class Solution {
public:
    vector sortArray(vector& nums) {
        quick_sort(nums, 0, nums.size() - 1);
        return nums;
    }
    void quick_sort(vector& nums, int l, int r) {
        if (l >= r) return;
        int left = l, right = r;
        swap(nums[l], nums[(l + r) / 2]);
        int pivot = nums[l];
        while (l < r) { //循环体内只扔了一对次,得一直扔到l==r
            // 这里的l= pivot && l < r) r--;//必须得r先扔给l,因为pivot=nums[l],l现在的位置是坑
            nums[l] = nums[r];
            while (nums[l] <= pivot && l < r) l++;
            nums[r] = nums[l];
        }
        //出循环肯定是因为l==r所以,这个l/r的坑就是给pivot留的
        nums[l] = pivot;
        quick_sort(nums, left, l - 1);
        quick_sort(nums, l + 1, right);
    }
};
    堆排

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存