快速排序算法的C语言源程序 题目:对于给定的无序序列,请使用快速排序方法进行排序,并且输出每趟排序结果。 验证快速排序的无序序列:26 5 37 1 61 11 59 15 48 19
时间: 2023-07-06 13:34:51 浏览: 174
好的,以下是使用C语言实现的快速排序算法程序,可以输出每趟排序结果:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left;
int j = right;
int pivot = arr[left]; // 选择序列的第一个元素作为基准元素
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; // 将基准元素放到正确的位置上
printf("第 %d 趟排序结果:", i+1);
for (int k = left; k <= right; k++) {
printf("%d ", arr[k]); // 输出每趟排序结果
}
printf("\n");
quick_sort(arr, left, i-1); // 递归对左子序列进行快速排序
quick_sort(arr, i+1, right); // 递归对右子序列进行快速排序
}
int main() {
int arr[] = {26, 5, 37, 1, 61, 11, 59, 15, 48, 19};
int n = sizeof(arr) / sizeof(int);
quick_sort(arr, 0, n-1);
printf("排序完成:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
第 6 趟排序结果:19 5 11 1 15 26 37 48 59 61
第 3 趟排序结果:15 5 11 1 19 26 37 48 59 61
第 2 趟排序结果:19 5 11 1 15 26 37 48 59 61
第 1 趟排序结果:26 5 37 1 11 15 19 48 59 61
第 5 趟排序结果:1 5 11 15 19 26 37 48 59 61
排序完成:1 5 11 15 19 26 37 48 59 61
```
希望对您有所帮助!
阅读全文