c++怎么实现快速排序算法

   2025-02-05 9050
核心提示:C++中可以通过递归来实现快速排序算法。以下是一种实现快速排序算法的示例代码:#include iostreamusing namespace std;// 交换

C++中可以通过递归来实现快速排序算法。以下是一种实现快速排序算法的示例代码:

#include <iostream>using namespace std;// 交换两个元素的值void swap(int* a, int* b){    int temp = *a;    *a = *b;    *b = temp;}// 将数组划分为两个子数组,并返回基准元素的索引int partition(int arr[], int low, int high){    int pivot = arr[high]; // 选取最后一个元素作为基准元素    int i = low - 1; // i 表示小于基准元素的子数组的最后一个元素的索引    for (int j = low; j < high; j++) {        // 如果当前元素小于或等于基准元素,则将其放入小于子数组中        if (arr[j] <= pivot) {            i++;            swap(&arr[i], &arr[j]);        }    }    swap(&arr[i + 1], &arr[high]); // 将基准元素放入正确的位置    return i + 1; // 返回基准元素的索引}// 快速排序函数void quickSort(int arr[], int low, int high){    if (low < high) {        int pivotIndex = partition(arr, low, high); // 获取基准元素的索引        quickSort(arr, low, pivotIndex - 1); // 对基准元素的左边子数组进行快速排序        quickSort(arr, pivotIndex + 1, high); // 对基准元素的右边子数组进行快速排序    }}int main(){    int arr[] = { 5, 3, 8, 6, 2, 7, 1, 4 };    int n = sizeof(arr) / sizeof(arr[0]);    quickSort(arr, 0, n - 1);    cout << "排序后的数组:";    for (int i = 0; i < n; i++) {        cout << arr[i] << " ";    }    return 0;}

这段代码首先定义了一个swap函数,用于交换数组中两个元素的值。然后,定义了一个partition函数,用于将数组划分为两个子数组,并返回基准元素的索引。最后,定义了一个quickSort函数,使用递归的方式进行快速排序。

main函数中,我们定义了一个待排序的数组arr,并计算出数组的长度。然后,调用quickSort函数对数组进行快速排序,并输出排序后的数组。

以上代码是一种简单的实现方式,快速排序的细节和优化方法还有很多,可以根据实际需要进行调整和优化。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言