用c语言,写一个代码,可以用插入排序对不同数据量的随机数据进行排序并记录排序所需时间。
时间: 2024-04-17 18:25:32 浏览: 105
当然可以!以下是一个使用插入排序算法对随机数据进行排序并记录排序时间的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void insertionSort(int arr[], int n) {
int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
int main() {
int dataSizes[] = {100, 500, 1000, 5000, 10000}; // 不同数据量
int dataSizeCount = sizeof(dataSizes) / sizeof(dataSizes[0]);
for (int k = 0; k < dataSizeCount; k++) {
int n = dataSizes[k];
int arr[n];
srand(time(0)); // 使用当前时间作为随机种子
for (int i = 0; i < n; i++) {
arr[i] = rand() % 1000; // 生成随机数
}
clock_t start_time = clock(); // 记录开始时间
insertionSort(arr, n); // 使用插入排序进行排序
clock_t end_time = clock(); // 记录结束时间
double total_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("Sorting time for data size %d: %f seconds\n", n, total_time);
}
return 0;
}
```
这段代码会按照预定义的不同数据量(100,500,1000,5000,10000)生成随机数据,然后使用插入排序算法进行排序,并记录排序所需时间。最后输出每个数据量的排序时间。你可以根据需要修改`dataSizes`数组中的数据量。注意,此代码使用了C标准库中的`time.h`和`stdlib.h`头文件来生成随机数和计算时间。
阅读全文