C++快速排序的实现

简介: C++快速排序的实现

快速排序(Quick Sort)是一种常用的排序算法,基本原理是通过选择一个基准元素,将数组分割成两部分,一部分的元素都小于基准,另一部分的元素都大于基准,然后对这两部分分别递归地进行快速排序,最终得到一个有序序列。

 

快速排序的基本原理如下:

1. **选择基准元素**:从数组中选择一个基准元素(通常选择第一个元素、最后一个元素或者随机选择),将数组分为两部分。

2. **分割操作**:重新排列数组,将小于基准元素的放在基准元素的左边,大于基准元素的放在右边,基准元素放在中间。

3. **递归排序**:对基准元素左右两部分分别递归进行快速排序。

 

快速排序的特点:

- 快速排序是一种不稳定的排序算法,相同元素的相对位置可能改变。

- 平均时间复杂度为 O(n log n),最坏情况下为 O(n^2)。

- 快速排序是原地排序算法,不需要额外的空间。

 

快速排序在实际应用中表现优异,尤其在大规模数据的排序中效率较高。以下是用 C++ 实现快速排序的示例代码:

 

```cpp
#include <iostream>
#include <vector>
 
int partition(std::vector<int>& arr, int low, int high) {
    int pivot = arr[high];
    int i = low - 1;
 
    for (int j = low; j < high; j++) {
        if (arr[j] < pivot) {
            i++;
            std::swap(arr[i], arr[j]);
        }
    }
 
    std::swap(arr[i + 1], arr[high]);
    return i + 1;
}
 
void quickSort(std::vector<int>& arr, int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);
 
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}
 
void printArray(const std::vector<int>& arr) {
    for (int num : arr) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
}
 
int main() {
    std::vector<int> arr = {10, 7, 8, 9, 1, 5};
    int n = arr.size();
 
    std::cout << "Original array: ";
    printArray(arr);
 
    quickSort(arr, 0, n - 1);
 
    std::cout << "Sorted array: ";
    printArray(arr);
 
    return 0;
}
```

在这段代码中,`partition` 函数用于将数组分割为两部分,并返回基准元素的位置,`quickSort` 函数实现了快速排序算法,`printArray` 函数用于打印数组的元素。在 `main` 函数中定义了一个整型数组并对其进行快速排序

相关文章
|
4月前
|
Java C++
快速排序(c++,java)
快速排序(c++,java)
16 0
|
9月前
|
搜索推荐 C++
C++实现快速排序算法
快速排序算法时最常用的排序算法之一,时间复杂度为O(nlog(n))~O(n^2),最差的时候就是排序的原始数据和要求正好相反,如需要正序的结果,而原始数据恰好是逆序的过程。
120 0
|
5月前
|
搜索推荐 大数据 C++
C++系列案例-大数据减法-绘制余弦曲线-兔子数量-快速排序
C++系列案例-大数据减法-绘制余弦曲线-兔子数量-快速排序
|
5月前
|
C++
C++快速排序
C++快速排序
38 1
|
8月前
|
算法 搜索推荐 C++
【C++】快速排序的学习和介绍
【C++】快速排序的学习和介绍
67 0
|
存储 人工智能 移动开发
【八大数据排序法】快速排序法的图形理解和案例实现 | C++
排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。
102 0
【八大数据排序法】快速排序法的图形理解和案例实现 | C++
|
C++ Python
LeetCode每日一题题解:912. 排序数组-题解-python && C++源代码-快速排序代码模板
LeetCode每日一题题解:912. 排序数组-题解-python && C++源代码-快速排序代码模板
|
算法 C++
2016年蓝桥杯c/c++ c组第5题 快速排序 双指针
2016年蓝桥杯c/c++ c组第5题 快速排序 双指针
|
存储 算法 搜索推荐
C++实现排序 - 02 归并排序、快速排序和堆排序
今天我们继续来整理平均时间复杂度为 O(nlogn) 的三个排序算法,即归并排序、堆排序和快速排序。
190 0
C++实现排序 - 02 归并排序、快速排序和堆排序
|
Java C++
【快速排序代码】记录:Java & C++
【快速排序代码】记录:Java & C++
104 0
【快速排序代码】记录:Java & C++