这是我自己写的一个插入排序的算法,main函数是测试用的,insertion_sort()函数就是插入排序的算法:
/*Author: Eric
*Time: 2011.01.07
*
*插入排序
*/
#include <stdio.h>
void insertion_sort(int a[], int n)
{
int i = 1;
int k = 0;
while(i < n)
{
int temp = a[i];
for(k = i-1; k >= 0; k--)
{
if(temp < a[k])
a[k+1] = a[k];
else
{
a[k+1] = temp;
break;
}
}
if(k == -1)
a[0] = temp;
i++;
}
}
int main()
{
int i = 0;
int a[] = {6,3,4,3,7,11,3};
insertion_sort(a, 7);
printf("a =");
for(i = 0; i < 7; i++)
printf(" %d", a[i]);
printf("\n");
return 0;
}
看了一下网上的源码,又有了一些改进,让代码更加紧凑。不过算法还是不是很明晰,看来需要专门学习一下算法了。
void insertion_sort(int a[], int n) { int i = 1; int k = 0; while(i < n) { int temp = a[i]; k = i-1; while(k >= 0 && a[k] > temp) { a[k+1] = a[k]; k--; } a[k+1] = temp; i++; } }