编程序,读入n个整数(n<30),对它们进行从小到大快速排序,并输出每一轮排序后的结果。c语言实现
时间: 2024-09-27 16:08:17 浏览: 78
在C语言中,我们可以使用快速排序算法来对一组整数进行排序。下面是一个简单的示例,实现了输入n个整数并逐步进行快速排序的过程:
```c
#include <stdio.h>
// 快速排序函数
void quickSort(int arr[], int low, int high) {
if (low < high) {
// 找到分区点
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
// 交换元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将分区点放到正确的位置
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
// 对左右两边再递归进行快速排序
quickSort(arr, low, i);
quickSort(arr, i + 2, high);
}
}
int main() {
int n;
printf("Enter the number of integers (less than 30): ");
scanf("%d", &n);
if (n >= 30) {
printf("Too many numbers! Please enter less than 30.\n");
return 1;
}
int arr[n];
printf("Enter %d integers:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
printf("Unsorted array after input %d: ", i+1);
for (int j = 0; j < i+1; j++) {
printf("%d ", arr[j]);
}
printf("\n"); // 输出每一轮排序前的数据
quickSort(arr, 0, i); // 避免不必要的排序,只对已输入的部分排序
printf("Sorted array after this round: \n");
for (int j = 0; j <= i; j++) {
printf("%d ", arr[j]);
}
printf("\n\n");
}
return 0;
}
```
这个程序首先接收用户输入的整数个数和数值,然后进行快速排序。注意这里为了简化演示,我们在每次排序后立即停止,只对已经输入的部分进行排序,实际应用中你需要对整个数组进行排序直到完成。
阅读全文