美文网首页
快速排序

快速排序

作者: Keizo | 来源:发表于2017-08-26 22:34 被阅读0次
    //从小到大快速排序
    void quickSort(vector<int> &nums, int left, int right)
    {
        if (left >= right) return;
        int i = left, j = right;
        //temp记录需要比较的值,在这个值之前的数小于它,之后的数大于它,这里取数组left位的数
        int temp = nums[left];
        while (i < j) {
            while (i < j && nums[j] >= temp) {
                j--;
            }
            
            while (i < j && nums[i] <= temp) {
                i++;
            }
            
            if (i < j) {
                swap(nums[i], nums[j]);
            }
        }
        //此时i = j
        //由于 j 先确定,所以 nums[j] 必然 <= temp, 可以与 nums[left] 互换 
        swap(nums[left], nums[j]);
        quickSort(nums, j+1, right);
        quickSort(nums, left, j-1);
    }
    

    相关文章

      网友评论

          本文标题:快速排序

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