手写排序算法

1、快速排序
① 递归法

void quickSort(vector<int>& nums, int l, int r) {
    if (l > r) {
        return;
    }

    // --- core begin ---
    int base = nums[l], i = l, j = r;
    while (i < j) {
        while (nums[j] >= base) {
            // 从右边找到第一个比base小的数
            j--;
        }
        while (nums[i] <= base) {
            // 从左边找到第一个比base大的数
            i++;
        }
        if (i < j) {
            swap(nums[i], nums[j]);
        }
    }
    swap(nums[i], nums[l]);
    // --- core end ---

    quickSort(nums, l, i - 1);
    quickSort(nums, i + 1, r)
}
全部评论

相关推荐

11-25 22:06
已编辑
华为 2012基座大模型(预研) 15A 硕士985
点赞 评论 收藏
分享
安静的鲸鱼offer...:神仙级别hr,可遇不可求,甚至他可能也是突然有感而发。只能说遇上是件幸事。
秋招开始捡漏了吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务