插入排序,这个排序平时用的不多,主要是把数组分为两堆,一堆排序ok,一堆未排序,把未排序的整数逐个插入到排序ok的整数中,最终两堆合并为一堆排序ok的数组,具体代码实现如下:
#include <stdio.h>
int main(void)
{
int num[] = {4,1,2,7,3,9,6,5,8};
int i, j;
int tmp, cur;
for (i = 1; i < 9; i++) {
tmp = num[i];
for (j = i - 1; num[j] > tmp; j--) {
num[j + 1] = num[j];
}
num[j + 1] = tmp;
}
for (cur = 0; cur < 9; cur++) {
printf("%d, ", num[cur]);
}
printf("\n");
return 0;
}
运行结果如下:
cheny.le@cheny-ThinkPad-T420:~$ gcc insert_sort.c
cheny.le@cheny-ThinkPad-T420:~$ ./a.out
1, 2, 3, 4, 5, 6, 7, 8, 9,
需要注意的地方是分堆,我是分成(0~i-1)和(i~9)两堆,把第i个整数逐步插入到前面那堆,最终能完成整个数组的排序。