以正序生成规模依次为10、100、1000、10000的数据进行冒泡排序用C语言生成
时间: 2024-09-11 11:16:06 浏览: 79
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止。对于规模分别为10、100、1000、10000的数据集,虽然冒泡排序的时间复杂度为O(n^2),但是在小规模数据集上进行排序仍然是一种可行的实现。
以下是使用C语言实现冒泡排序的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数原型声明
void bubbleSort(int arr[], int n);
int main() {
int sizes[] = {10, 100, 1000, 10000}; // 定义不同规模的数据集
for (int i = 0; i < sizeof(sizes)/sizeof(sizes[0]); i++) {
int n = sizes[i];
int *arr = (int *)malloc(n * sizeof(int));
// 随机生成数据
for (int j = 0; j < n; j++) {
arr[j] = rand() % n;
}
// 执行冒泡排序
bubbleSort(arr, n);
// 释放内存
free(arr);
}
return 0;
}
// 冒泡排序的实现
void bubbleSort(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;
}
}
}
}
```
请注意,上面的代码仅展示了冒泡排序的实现和主函数的基本结构,实际上在对规模较大的数组进行排序时,应考虑添加一些优化措施,如设置一个标志位来记录某次遍历是否发生了交换,如果在某次遍历中没有发生任何交换,说明数组已经是有序的,可以提前结束排序,这样可以提高效率。
此外,在排序规模较大时(如10000),冒泡排序将变得非常慢,因此通常不推荐在实际应用中使用冒泡排序处理大规模数据集。
阅读全文