C语言实现插入排序并计算它的正序和逆序的时间复杂度,并输出时间复杂度
时间: 2024-05-04 19:20:17 浏览: 59
用c语言实现插入排序
下面是C语言实现插入排序的代码:
```c
#include <stdio.h>
void insertion_sort(int arr[], int n) {
int i, j, key;
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(void) {
int arr[] = { 5, 2, 4, 6, 1, 3 };
int n = sizeof(arr) / sizeof(arr[0]);
insertion_sort(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
插入排序的时间复杂度:
在最坏情况下,即待排序的序列是倒序排列时,插入排序的时间复杂度为$O(n^2)$。在最好情况下,即待排序的序列已经是正序排列时,插入排序的时间复杂度为$O(n)$。平均情况下,插入排序的时间复杂度为$O(n^2)$。
因此,插入排序的时间复杂度为$O(n^2)$。
阅读全文