快速排序,输入一串数据-1结束,输出每趟数据和排序次数,C语言
时间: 2024-02-25 21:58:08 浏览: 20
好的,以下是快速排序的C语言实现,同时输出每趟数据和排序次数:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right, int *count) {
if (left >= right) {
return;
}
int i = left, j = right;
int pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
(*count)++;
while (i < j && arr[i] < pivot) {
i++;
}
arr[j] = arr[i];
(*count)++;
}
arr[i] = pivot;
(*count)++;
printf("第%d趟排序结果:", *count);
for (int k = 0; k <= right; k++) {
printf("%d ", arr[k]);
}
printf("\n");
quick_sort(arr, left, i - 1, count);
quick_sort(arr, i + 1, right, count);
}
int main() {
int arr[100], n = 0, count = 0;
printf("请输入一串数据(以-1结束):");
while (1) {
scanf("%d", &arr[n]);
if (arr[n] == -1) {
break;
}
n++;
}
quick_sort(arr, 0, n - 1, &count);
printf("排序完成,共进行了%d次排序。\n", count);
return 0;
}
```
输入一串数据后,程序将会进行快速排序,并在每趟排序后输出排序结果和排序次数。最终输出完成排序所进行的总排序次数。