c++-写一个快排怎么写?
快速排序(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 是数组的长度。快速排序是一种不稳定的排序算法,因为在排序过程中可能会改变相同元素的相对位置。
原文地址: https://www.cveoy.top/t/topic/qCC 著作权归作者所有。请勿转载和采集!