c++快速排序

#include
#include
using namespace std;
int partition(vector& arr, int left, int right) {
    int pivot = arr[left]; // 选择第一个元素作为枢轴
    int i = left + 1, j = right;
    while (true) {
        while (i <= j && arr[i] < pivot) i++;
        while (i <= j && arr[j] > pivot) j--;
        if (i >= j) break;
        swap(arr[i++], arr[j--]);
    }
    swap(arr[left], arr[j]); // 将枢轴元素放到正确的位置上
    return j;
}
void quicksort(vector& arr, int left, int right) {
    if (left >= right) return; // 递归终止条件
    int pivot_idx = partition(arr, left, right); // 将数组分为两部分
    quicksort(arr, left, pivot_idx - 1); // 递归排序左半部分
    quicksort(arr, pivot_idx + 1, right); // 递归排序右半部分
}
int main() {
    vector arr = {5, 3, 8, 4, 2, 7, 1, 6};
    quicksort(arr, 0, arr.size() - 1); // 对数组进行快速排序
    for (int num : arr) {
        cout << num << " "; // 输出排序后的数组
    }
    return 0;
}
 

你可能感兴趣的:(c++)