用c语言实现输入一个整数n,再输入n个数,用快排实现从小到大排序。在排序过程中当要排序的数据量小于50个数据时,则直接使用冒泡排序
时间: 2024-10-04 10:01:51 浏览: 56
在C语言中,你可以结合快速排序(Quick Sort)和冒泡排序(Bubble Sort)来实现这个需求。下面是一个简单的示例:
```c
#include <stdio.h>
// 快速排序函数
void quick_sort(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++) {
// 如果当前元素小于或等于pivot,将其移到左边并递增i
if (arr[j] <= pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
// 将pivot放到正确的位置,即i+1
swap(&arr[i + 1], &arr[high]);
// 对左右两边分别进行快速排序
quick_sort(arr, low, i); // 左边
quick_sort(arr, i + 2, high); // 右边
}
}
// 冒泡排序函数
void bubble_sort(int arr[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 读取n个整数,结合快速排序和冒泡排序
int main() {
int n, num;
printf("Enter the number of integers to sort: ");
scanf("%d", &n);
// 为了演示,假设我们有一个数组
int arr[n];
printf("Enter %d integers: ", n);
for (int i = 0; i < n; i++) {
scanf("%d", &num);
arr[i] = num;
}
// 如果数据量小于50,使用冒泡排序
if (n < 50) {
bubble_sort(arr, n);
} else {
quick_sort(arr, 0, n - 1);
}
printf("Sorted array in ascending order:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
阅读全文