以下是一个简单的C++快排实现:

#include <iostream>
using namespace std;

void quickSort(int arr[], int left, int right) {
    int i = left, j = right;
    int temp;
    int pivot = arr[(left + right) / 2];

    while (i <= j) {
        while (arr[i] < pivot)
            i++;
        while (arr[j] > pivot)
            j--;
        if (i <= j) {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    };

    if (left < j)
        quickSort(arr, left, j);
    if (i < right)
        quickSort(arr, i, right);
}

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

    quickSort(arr, 0, n - 1);

    cout << "Sorted array: \n";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    cout << endl;

    return 0;
}

该算法是一种基于分治思想的排序算法,它的时间复杂度为O(n log n)。快排的基本思路是选择一个pivot元素,将数组分为两个部分,一部分小于pivot,一部分大于pivot,然后对这两部分分别进行快排,直到整个数组有序。


原文地址: https://www.cveoy.top/t/topic/B76 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录