1、 算法实现
插入排序的时间复杂度为O(n^2),其排序过程就如同打牌时抓牌的过程。其实现算法如下:
int insert_sort(int *array, int num)
{
int i=0, j=0;
for(j=2; j<num-1; j++)
{
i = j-1;
array[0] = array[j]; /* array[0]为哨兵 */
while(array[i] < array[0])
{
array[i+1] = array[i];
i--;
}
array[i+1] = array[0];
}
return 0;
}
2、 算法调用
#define ARRAY_NUM (10)
int main(int argc, void *argc)
{
int idx = 0;
int array[ARRAY_NUM] = {0, 9, 8, 7, 6, 5, 4, 3, 2, 1};
insert_sort(array, ARRAY_NUM);
for(idx=1; idx<ARRAY_NUM; idx++)
{
fprintf(stdout, "array[%d] = %d\n", idx, array[idx]);
}
return 0;
}
本文详细介绍了一种简单直观的排序算法——插入排序,并提供了具体的C语言实现代码。通过模拟抓牌过程,该算法将未排序的部分逐步插入到已排序部分中。文章还给出了一个示例程序,演示了如何对一个整数数组进行排序。
278

被折叠的 条评论
为什么被折叠?



