快速排序

#include<iostream>
#include <type_traits>
#include <vector>

using namespace std;

void quick(vector<int>& nums, int start, int end) {
    if(start >= end) {
        return;
    }
    int flag = nums[end];
    int s = start, f = end - 1;
    while(s < f) {
        while(nums[s] < flag && s < f) {
            s++;
        }
        while(nums[f] > flag && s < f) {
            f--;
        }
        swap(nums[s], nums[f]);
    }
    if(nums[s] >= nums[end]) {
        swap(nums[s], nums[end]);
    }else {
        s++;
    }
    quick(nums, start, s - 1);
    quick(nums, s + 1, end);

}



void printV(vector<int>& nums) {
    for(int num : nums) {
        cout << num << " ";
    }
}


int main() {

    vector<int> nums = {1, 5, 6, 9, 23, 45, 1, 7, 7};
    quick(nums, 0, nums.size() - 1);
    printV(nums);

    return 0;
}

posted @ 2024-04-11 22:16  铜锣湾陈昊男  阅读(10)  评论(0)    收藏  举报