📜  用于快速排序的 c++ 代码 - C++ (1)

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

用于快速排序的 C++ 代码
#include <iostream>
using namespace std;

// 快速排序函数
void quickSort(int arr[], int left, int right) {
    if (left >= right) {
        return;
    }
    int i = left, j = right;
    int pivot = arr[(left + right) / 2]; // 选择中间元素作为基准值

    // 将数组分为两部分
    while (i <= j) {
        while (arr[i] < pivot) {
            i++;
        }
        while (arr[j] > pivot) {
            j--;
        }
        if (i <= j) {
            // 交换arr[i]和arr[j]
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }

    // 递归调用快速排序函数
    quickSort(arr, left, j);
    quickSort(arr, i, right);
}

int main() {
    int arr[] = { 9, 2, 5, 1, 7, 4, 8, 3, 6 };
    int n = sizeof(arr) / sizeof(arr[0]);

    cout << "原始数组:";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    quickSort(arr, 0, n - 1);

    cout << "排序后的数组:";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

这段 C++ 代码是一个用于快速排序的示例。快速排序是一种高效的排序算法,它通过选择一个"基准值",将数组划分为两部分,并对每部分递归地进行排序,直到整个数组有序。

代码中的 quickSort 函数实现了快速排序算法。它接受一个整型数组 arr、左边界 left 和右边界 right 作为参数。函数首先选择中间元素作为基准值,然后使用双指针法将数组划分为两部分,左边部分的元素都小于基准值,右边部分的元素都大于基准值。接下来,函数使用递归调用对左右两边的子数组进行排序,直到子数组长度为1或0时停止递归。

main 函数中,创建一个包含9个元素的数组 arr 并初始化。然后,调用 quickSort 函数对数组进行排序。最后,打印排序后的数组。

你可以将以上代码保存为一个 C++ 源文件,编译并运行,即可看到原始数组和排序后的数组的输出。

结果如下所示:

原始数组:9 2 5 1 7 4 8 3 6 
排序后的数组:1 2 3 4 5 6 7 8 9

希望这段代码能帮助你理解快速排序算法及其实现。