题解 | #牛群的排序# 快排

牛群的排序

https://www.nowcoder.com/practice/c35e45c4adda44a1a3c5115033e0c5f0

#include <vector>
class Solution {
  public:
    void quickSort(vector<int>& nums, int left, int right) {
        int i = left, j = right;
        int pivot = nums[(left + right) / 2];
        while (i <= j) {
            while (nums[i] < pivot) {
                i++;
            }
            while (nums[j] > pivot) {
                j--;
            }
            if (i <= j) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
                i++;
                j--;
            }
        }
        if (i < right) {
            quickSort(nums, i, right);
        }
        if (j > left) {
            quickSort(nums, left, j);
        }
    }
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型vector
     * @return int整型vector
     */
    vector<int> sortCows(vector<int>& nums) {
        quickSort(nums, 0, nums.size() - 1);
        return nums;
    }
};

时间复杂度:

最优情况:O(n log n)

平均情况:O(n log n)

最坏情况:O(n^2)(在数组已经有序或者所有元素相同的情况下)

空间复杂度:

最优情况:O(log n)(使用递归调用栈的深度)

最坏情况:O(n)(在最坏情况下,递归调用栈的深度为n)

全部评论

相关推荐

11-20 22:03
东北大学 Java
用哈基米写的简历,有点夸大,等我后面改谦虚点,能不能找个日常实习,项目是点评和天机,没什么荣誉要不要把蓝桥杯和六级删了算了,实在没门面
程序员花海:日常实习这份简历够用的,等实习之后把实习经历结合业务好好写一下 到时候把实习经历放在项目经历的前面 可以看我主页修改简历的模板
如何写一份好简历
点赞 评论 收藏
分享
LZStarV:冲就好了,就算真的是字节也冲,面评脏了大不了等三四个月就淡了,而且等到那个时候实力进步了选择还多,何必拘泥于字节
点赞 评论 收藏
分享
10-09 19:08
已编辑
门头沟学院 Java
后端转测开第一人:换个模版 技术栈写的精炼紧凑一点 多投就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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