排序

快速排序

一种简介实现,相比较于标准写法,每次比较之后确保左边比右边小,而不是比基准小,但是更简单。

void qsort(vector& nums, int left, int right) {
        if(left > right) return;
        
        int i = left, j = right;
        int mid = left + (right - left) / 2 ;
        int flag = nums[mid];
        while (i <= j) {
            while (nums[i] < flag) i++;
            while (nums[j] > flag) j--;
            if (i <= j) {
                swap(nums[i], nums[j]);
                i++;
                j--;
            }
            
        }
        qsort(nums, left, j);
        qsort(nums, i, right);
    }

你可能感兴趣的:(排序)