int数组的快速排序
时间: 2023-10-22 18:30:16 浏览: 83
int数组的快速排序可以通过递归实现。下面是一个示例的C++代码:
```cpp
#include <iostream>
// 交换数组中两个元素的位置
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;
for (int j = low; j <= high - 1; 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 pivot = partition(arr, low, high);
// 递归地对左侧部分和右侧部分进行排序
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
int main() {
int arr[] = {3, 9, 1, 4, 7, 2, 8, 6, 5};
int n = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
// 对数组进行快速排序
quickSort(arr, 0, n - 1);
std::cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码实现了快速排序算法。首先,通过`partition`函数将数组划分为两个部分,并返回基准元素的正确位置。然后,对两个部分分别进行递归地排序,直到数组完全有序。在`main`函数中,我们可以看到一个示例数组的排序结果。
阅读全文