📅  最后修改于: 2023-12-03 14:54:19.349000             🧑  作者: Mango
快速排序经常被用于排序算法比较中,因为它简单快速且具有优秀的时间复杂度。
快速排序采用了分治的思想,首先选择一个基准元素,然后将剩余元素分为两部分,比基准元素小的放在左边,比基准元素大的放在右边,再对左右两部分分别进行快速排序,以达到整个序列有序的目的。
void quickSort(vector<int>& nums, int left, int right) {
if (left < right) {
int pivot = nums[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (nums[j] < pivot) {
i++;
swap(nums[i], nums[j]);
}
}
swap(nums[i+1], nums[right]);
int mid = i + 1;
quickSort(nums, left, mid-1);
quickSort(nums, mid+1, right);
}
}
注意:由于快速排序是一种递归算法,如果处理的序列过于庞大,可能导致栈溢出。因此,有时候需要将递归改为非递归的实现方式,从而避免栈溢出。