weixin_43306709 2022-05-01 21:41 采纳率: 77.3%
浏览 92

leetcode上面快速排序为什么会超出时间限制

问题遇到的现象和发生背景

912、排序数组

问题相关代码,请勿粘贴截图
class Solution {
    void quicksort(vector<int>& nums,int low,int high)
{
    if(low < high){
    int left = low;
    int right = high;
    int pivot = nums[left];
    while(left < right)
    {
        while(left < right&&nums[right]>=pivot)
            right--;
        nums[left] = nums[right];

        while(left<right&&nums[left]<=pivot)
            left++;
        nums[right] = nums[left];   
    }
    nums[left] = pivot;
    quicksort(nums,low,left-1);
    quicksort(nums,left+1,high);
    }  
}
public:
    vector<int> sortArray(vector<int>& nums) {
        quicksort(nums,0,nums.size()-1);
        return nums;
    }
};

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • aabyte 2022-05-01 22:05
    关注

    这样快一些

    class Solution {
    public:
        void quick_sort(vector<int>& q,int l,int r)  //快速排序
        {
            if(l >= r) return;
            int x = q[l + (r - l) / 2],i = l - 1,j = r + 1;
            while(i < j)
            {
                while(q[++i] < x);
                while(q[--j] > x);
                if(i < j) swap(q[i], q[j]);
            }
            quick_sort(q, l, j);
            quick_sort(q, j + 1, r);
        }
      
        vector<int> sortArray(vector<int>& nums) {
            quick_sort(nums, 0, nums.size() - 1);
            return nums;
        }
    };
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月1日

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况