请帮我写冒泡法和快速排序比较10万个数据的c语言代码
时间: 2024-09-26 17:10:06 浏览: 38
冒泡排序和快速排序是两种常见的排序算法,它们在处理大规模数据时有着不同的效率。下面是C语言中使用这两种算法对10万个随机整数进行排序的基本示例:
### 冒泡排序 (Bubble Sort)
```c
#include <stdio.h>
#include <stdlib.h>
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int 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;
}
}
}
}
int main() {
int *data = malloc(100000 * sizeof(int)); // 分配内存
// 填充数据...
int data_size = 100000;
bubble_sort(data, data_size);
// 输出排序后的数组...
for (int i = 0; i < data_size; i++) {
printf("%d ", data[i]);
}
printf("\n");
free(data); // 释放内存
return 0;
}
```
### 快速排序 (Quick Sort)
```c
#include <stdio.h>
#include <stdlib.h>
// 快速排序辅助函数
int partition(int arr[], int low, int 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;
return (i + 1);
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quick_sort(arr, low, pi - 1);
quick_sort(arr, pi + 1, high);
}
}
int main() {
int *data = malloc(100000 * sizeof(int)); // 分配内存
// 填充数据...
int data_size = 100000;
quick_sort(data, 0, data_size - 1);
// 输出排序后的数组...
for (int i = 0; i < data_size; i++) {
printf("%d ", data[i]);
}
printf("\n");
free(data); // 释放内存
return 0;
}
```
请注意,上述代码仅用于演示基本思想,实际操作中需要处理数组初始化、边界检查和性能优化等问题。同时,对于10万个数据量,快速排序通常比冒泡排序快得多。
阅读全文