用c语言实现选择排序的int函数并在函数内计算每趟排序的时间和所需趟数
时间: 2024-11-05 20:29:08 浏览: 19
[C语言] 使用回调函数实现冒泡排序
在C语言中,你可以通过创建一个名为`selection_sort`的函数来实现选择排序算法,并在内部使用计时器记录每次排序所需时间和总的趟数。这里是一个简单的示例:
```c
#include <stdio.h>
#include <time.h>
// 定义数组大小和初始值
#define SIZE 10
int arr[SIZE] = {5, 3, 8, 6, 1, 9, 2, 7, 4, 0};
// 计算时间并选择排序
void selection_sort(int *arr, int n, clock_t *start_time) {
clock_t start = clock();
for (int i = 0; i < n - 1; i++) {
// 找到未排序部分的最小元素
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// 交换最小元素到已排序部分
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
// 记录时间
clock_t current = clock();
double time_elapsed = ((double)(current - start)) / CLOCKS_PER_SEC;
printf("After %dth pass, time elapsed: %.6f seconds\n", i + 1, time_elapsed);
}
clock_t end = clock();
double total_time = ((double)(end - start)) / CLOCKS_PER_SEC;
printf("Total time taken: %.6f seconds\n", total_time);
// 总趟次数
printf("Total passes made: %d\n", n - 1);
}
int main() {
clock_t start_time = clock(); // 开始计时
selection_sort(arr, SIZE, &start_time);
return 0;
}
```
这个程序首先初始化一个数组,然后在`selection_sort`函数中递归地遍历数组,找到剩余部分的最小元素并将其放在适当的位置。同时,它会记录每轮的时间消耗,并在结束后报告整个过程的总耗时以及所需的趟数。
阅读全文