插入排序的工作方式就像排序一手扑克牌。开始时,我们的左手为空,然后,我们每次从桌上拿走一张牌并将它插入到左手中正确的位置。为了找到正确的位置,我们总是从右到左将它与左手中的每张牌进行比较。这样,左手中的牌始终是排好序的,直到最后一张。
插入排序的时间复杂度是O(n^2),因此,对于小规模问题,能有效解决,但是对于大规模排序,可能就要选择其他排序方法。
#include <stdio.h>
void insertion_sort(int *,int);
main()
{
int i;
int a[10] = {23,43,56,41,9,80,123,1,14,90};
insertion_sort(a,10);
for (i = 0;i < 10;i++)
printf("%d ",a[i]);
printf("\n");
}
void insertion_sort(int *a,int n)//a为数组,n为数组个数
{
int i,j,key;
for (j = 1;j < n;j++) {
key = a[j];
i = j - 1;
while (i >= 0 && a[i] > key) {
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
}