快速排序(Quick Sort)是一种高效的排序算法,它的平均时间复杂度为 O(n log n)。快速排序的基本思想是选择一个基准元素,将数组分成两部分,一部分比基准元素小,一部分比基准元素大,然后递归地对这两部分进行排序。

下面是 C++ 实现快速排序的代码:

#include <iostream>
#include <vector>

using namespace std;

void quickSort(vector<int>& nums, int left, int right) {
    if (left >= right) return;  // 递归出口

    int pivot = nums[left];  // 选择第一个元素作为基准元素
    int i = left, j = right;

    while (i < j) {
        while (i < j && nums[j] >= pivot) j--;  // 从右往左找第一个小于基准元素的数
        if (i < j) nums[i++] = nums[j];  // 把小于基准元素的数放到左边

        while (i < j && nums[i] < pivot) i++;  // 从左往右找第一个大于等于基准元素的数
        if (i < j) nums[j--] = nums[i];  // 把大于等于基准元素的数放到右边
    }

    nums[i] = pivot;  // 把基准元素放到中间

    quickSort(nums, left, i - 1);  // 递归地对左半部分进行排序
    quickSort(nums, i + 1, right);  // 递归地对右半部分进行排序
}

int main() {
    vector<int> nums = {5, 2, 6, 1, 3, 9, 4, 8, 7};
    quickSort(nums, 0, nums.size() - 1);
    for (int n : nums) cout << n << " ";
    cout << endl;  // 输出:1 2 3 4 5 6 7 8 9
    return 0;
}

快速排序的时间复杂度为 O(n log n),空间复杂度为 O(log n),其中 n 是数组的长度。快速排序是一种不稳定的排序算法,因为在排序过程中可能会改变相同元素的相对位置。

c++-写一个快排怎么写?

原文地址: https://www.cveoy.top/t/topic/qCC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录