用将快速排序算法写成完整的程序上机通过,并统计递归深度。
时间: 2024-02-18 14:04:48 浏览: 20
好的,以下是一个用C++实现的快速排序算法程序,并且会统计递归深度:
```c++
#include <iostream>
using namespace std;
int quicksort(int arr[], int l, int r, int depth) {
if (l < r) {
int pivot = arr[l];
int i = l, j = r;
while (i < j) {
while (i < j && arr[j] >= pivot) j--;
if (i < j) arr[i++] = arr[j];
while (i < j && arr[i] < pivot) i++;
if (i < j) arr[j--] = arr[i];
}
arr[i] = pivot;
depth++;
int left_depth = quicksort(arr, l, i - 1, depth);
int right_depth = quicksort(arr, i + 1, r, depth);
depth = max(left_depth, right_depth);
}
return depth;
}
int main() {
int arr[] = {4, 2, 8, 1, 3, 7, 6, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int depth = quicksort(arr, 0, n - 1, 0);
cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl << "Recursion depth: " << depth << endl;
return 0;
}
```
程序中的 `quicksort` 函数实现了快速排序算法,其中 `l` 和 `r` 分别表示当前排序范围的左右下标,`depth` 表示当前递归深度。程序最后输出排好序的数组和递归深度。