用c语言写一个使用快速排序,并打印每次排列的顺序的代码
时间: 2023-06-01 19:02:54 浏览: 45
以下是使用C语言实现快速排序并打印每次排列的顺序的代码:
```c
#include <stdio.h>
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[] = { 10, 7, 8, 9, 1, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
quickSort(arr, 0, n - 1);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果:
```
Original array: 10 7 8 9 1 5
Sorted array: 1 5 7 8 9 10
```
如果你想打印每次排序后的数组,可以在函数中添加打印语句,如下所示:
```c
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);
printf("After sorting: ");
for (int k = left; k <= j; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
if (i < right) {
quickSort(arr, i, right);
printf("After sorting: ");
for (int k = i; k <= right; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
}
```
输出结果:
```
Original array: 10 7 8 9 1 5
After sorting: 5 7 1 8 9 10
After sorting: 5 1 7 8 9 10
After sorting: 1 5 7 8 9 10
Sorted array: 1 5 7 8 9 10
```