美文网首页
快排中的注意点

快排中的注意点

作者: 鲜橙 | 来源:发表于2020-06-07 17:55 被阅读0次

首先把快排的原理搞懂https://blog.csdn.net/qq_28584889/article/details/88136498

但是在自己写的时候发现有几个地方容易掉坑,即代码中的注释处,对于其原因的解释应该再看一遍快排原理。

题目来自 leetcode - [912. Sort an Array]

class Solution {
public:
    vector<int> sortArray(vector<int>& nums) {
        quiksort(nums, 0, nums.size()-1);
        return nums;
    }
    
    void quiksort(vector<int>& nums, int left, int right) {
        if (left >= right)
            return;
        if (left < 0 || right > nums.size())
            return;
        
        int base = nums[left];
        int i = left; // 这里从left开始!!!
        int j = right;
        while(i < j){
            // 1. j(right)要先移动
            // 2. 注意base比较时的等于号
            while(base <= nums[j] && i < j){
                j--;
            }
            while(base >= nums[i] && i < j){
                i++;
            }
            std::swap(nums[i], nums[j]);
        }
        std::swap(nums[left], nums[i]);
        quiksort(nums, left, i-1);
        quiksort(nums, i+1, right);
    }
};

相关文章

  • 快排中的注意点

    首先把快排的原理搞懂https://blog.csdn.net/qq_28584889/article/detai...

  • 快速排序

    快排的思想是递归,一次快排函数是使用的双指针。一次快排中,任选一个轴点,一次快排后,左边的元素比它小,右边的元素比...

  • Python中的快排优化

    基本快速排序分析 以从小到大排序为例 选取一个主元(选取方式多样) 利用主元,将序列分为两个子序列,左侧都比主元小...

  • 2022-02-20最小的k个数

    1.快排划分思路的解法 特别注意k=0的情况

  • 快排 & 堆排序

    排序 排序一直是很基础的一个问题。 复习快排 &堆排序。 LeetCode215 找第k大的元素 快排 注意事项:...

  • 算法修炼

    冒泡与快排(更新中)

  • 快速排序的经典实现,你真的会写吗?

    快速排序,简称快排。快排是所有排序算法中应用最广泛的。接下来我们将会说说一个经典的快排是如何实现的。 思路 快排的...

  • 快排

    快排代码

  • 快排

  • 快排

    昨天晚上睡觉前兴起准备十分钟写出快排,结果纠结了两个小时愣是没有搞出来,很郁闷地睡觉去。今天地铁上跟LG又重新缕了...

网友评论

      本文标题:快排中的注意点

      本文链接:https://www.haomeiwen.com/subject/mmoctktx.html