📜  快速排序 c++ (1)

📅  最后修改于: 2023-12-03 14:54:19.349000             🧑  作者: Mango

快速排序(C++)

快速排序经常被用于排序算法比较中,因为它简单快速且具有优秀的时间复杂度。

思路

快速排序采用了分治的思想,首先选择一个基准元素,然后将剩余元素分为两部分,比基准元素小的放在左边,比基准元素大的放在右边,再对左右两部分分别进行快速排序,以达到整个序列有序的目的。

代码实现
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);
    }
}
Time Complexity
  • 最优时间复杂度:O(nlogn)
  • 最坏时间复杂度:O(n^2)
  • 平均时间复杂度:O(nlogn)

注意:由于快速排序是一种递归算法,如果处理的序列过于庞大,可能导致栈溢出。因此,有时候需要将递归改为非递归的实现方式,从而避免栈溢出。