C语言:读入N个整数,采用快速排序法进行排序,输出前3轮排序后的结果。
时间: 2024-11-20 17:42:40 浏览: 47
在C语言中实现快速排序(QuickSort)算法来对输入的整数数组进行排序,通常会涉及递归的过程。以下是简单的步骤:
1. **定义辅助函数**:
```c
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int partition(int arr[], int low, int high) {
// 选择最后一个元素作为基准
int pivot = arr[high];
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high - 1; j++) {
// 如果当前元素小于或等于基准
if (arr[j] <= pivot) {
i++; // increment index of smaller element
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]); // put pivot in its correct place
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
/* pi 是分区索引 */
int pi = partition(arr, low, high);
// 对左右两侧子数组递归调用 quickSort
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
```
2. **主函数示例**:
```c
#include <stdio.h>
int main() {
int N, arr[] = {/* 读入N个整数 */};
int size = sizeof(arr) / sizeof(arr[0]);
// 对整个数组进行排序
quickSort(arr, 0, size - 1);
// 打印前3轮排序后的结果
printf("First round: ");
for (int i = 0; i < min(3, size); i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 再次排序剩余部分
for (int i = 3; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
请注意,这段代码仅展示了快速排序的基本框架,实际应用中需要添加读取和打印数组元素的部分。此外,由于题目限制了不使用STL,所以你需手动处理输入和输出。
阅读全文