用c语言实现对排序函数以及其对长度为n的顺序表进行排序所消耗的时间
时间: 2024-02-05 10:10:25 浏览: 121
c语言各种排序方法及其所耗时间比较程序.doc
以下是使用C语言实现排序函数并计算排序时间的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_LEN 100000 // 定义顺序表的最大长度
#define MAX_NUM 100000 // 定义元素的最大值
// 生成随机数填充顺序表
void generateList(int list[], int len) {
int i;
for (i = 0; i < len; i++) {
list[i] = rand() % MAX_NUM + 1;
}
}
// 冒泡排序
void bubbleSort(int list[], int len) {
int i, j;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (list[j] > list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
}
// 计算排序时间
void sortTime(void (*sortFunc)(int[], int), int list[], int len) {
clock_t start, end;
double elapsed;
start = clock();
sortFunc(list, len);
end = clock();
elapsed = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Sort time: %f seconds\n", elapsed);
}
int main() {
int list[MAX_LEN]; // 定义顺序表
int len = 10000; // 定义顺序表长度
generateList(list, len); // 生成随机数填充顺序表
printf("Before sort:\n");
int i;
for (i = 0; i < len; i++) {
printf("%d ", list[i]);
}
printf("\n");
printf("Bubble sort:\n");
sortTime(bubbleSort, list, len); // 计算冒泡排序时间
printf("After sort:\n");
for (i = 0; i < len; i++) {
printf("%d ", list[i]);
}
printf("\n");
return 0;
}
```
在这个示例程序中,我们定义了一个顺序表 `list` 和它的长度 `len`,并使用 `generateList` 函数生成随机数填充这个顺序表。我们也定义了冒泡排序函数 `bubbleSort`。通过 `sortTime` 函数,我们可以计算排序函数消耗的时间。最后在主函数中,我们先输出排序前的顺序表,然后计算冒泡排序消耗的时间,并输出排序后的顺序表。
需要注意的是,在这个示例程序中我们只实现了冒泡排序,如果想要测试其他排序算法,可以定义其他排序算法的函数并在 `sortTime` 函数中调用。同时,为了使程序运行时间更加准确,我们使用了 `clock` 函数来计算程序实际运行的时间。
阅读全文