用c语言将快速排序算法写成完整的程序上机通过,并统计递归深度。
时间: 2024-02-18 08:04:51 浏览: 74
c 语言实现快速排序算法
5星 · 资源好评率100%
好的,以下是一个用C语言实现的快速排序算法程序,并且会统计递归深度:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
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) {
swap(&arr[i], &arr[j]);
i++;
}
while (i < j && arr[i] < pivot) i++;
if (i < j) {
swap(&arr[i], &arr[j]);
j--;
}
}
depth++;
int left_depth = quicksort(arr, l, i - 1, depth);
int right_depth = quicksort(arr, i + 1, r, depth);
depth = (left_depth > right_depth) ? 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);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\nRecursion depth: %d\n", depth);
return 0;
}
```
程序中的 `quicksort` 函数实现了快速排序算法,其中 `l` 和 `r` 分别表示当前排序范围的左右下标,`depth` 表示当前递归深度。程序最后输出排好序的数组和递归深度。
阅读全文