C语言实现比较次数和交换次数的统计
时间: 2024-05-05 18:21:07 浏览: 14
在C语言中,可以通过在排序算法中添加计数器来统计比较次数和交换次数。
以下是一个简单的例子,使用选择排序算法来统计比较次数和交换次数:
```c
#include <stdio.h>
void selection_sort(int arr[], int n, int *comp_count, int *swap_count) {
int i, j, min_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
(*comp_count)++; // 比较次数加1
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
if (min_idx != i) {
(*swap_count)++; // 交换次数加1
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
int comp_count = 0, swap_count = 0;
selection_sort(arr, n, &comp_count, &swap_count);
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("Number of comparisons: %d\n", comp_count);
printf("Number of swaps: %d\n", swap_count);
return 0;
}
```
在这里,我们将比较次数和交换次数作为指针传递给 `selection_sort()` 函数。在选择排序算法中,每次比较都会增加比较次数计数器,每次交换都会增加交换次数计数器。最后,我们在主函数中输出了排序后的数组以及比较和交换的次数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)