C语言直接插入排序,并加入比较次数的计数功能
时间: 2023-06-01 08:02:33 浏览: 116
以下是C语言实现直接插入排序,并加入比较次数的计数功能的代码:
```c
#include <stdio.h>
void insertion_sort(int arr[], int n, int* cmp_count) {
int i, j, temp;
for (i = 1; i < n; i++) {
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j];
(*cmp_count)++;
}
arr[j + 1] = temp;
}
}
int main() {
int arr[] = { 5, 2, 4, 6, 1, 3 };
int n = sizeof(arr) / sizeof(arr[0]);
int cmp_count = 0;
insertion_sort(arr, n, &cmp_count);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("Total comparisons: %d\n", cmp_count);
return 0;
}
```
在上述代码中,insertion_sort函数使用了指针来传递cmp_count变量的地址,以实现在函数内部更新该变量的值。在比较操作发生时,cmp_count的值会自动加1,从而实现比较次数的计数。
在主函数中,我们先定义了一个int型数组arr和一个整数n,用于存储待排序的数组和数组长度。然后定义了一个整数cmp_count,用于存储比较次数的计数结果。接着调用insertion_sort函数对arr数组进行排序,并传入cmp_count变量的地址。最后在屏幕上输出排序后的结果和比较次数。