写一段C++的快排
以下是一个简单的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 著作权归作者所有。请勿转载和采集!