插入排序我觉得最像线性表的插入操作:
先找到要插入的位置,然后向后移动。
代码如下:
#include <stdio.h>
void insertsort(int array[], int len)
{
int i = 0, j = 0, k = -1,temp=-1;
for (i = 1; i<len; i++)
{
k = i;//待插入位置
temp = array[k];
for (j = i-1; (j >=0)&&(array[j]>temp); j--)
{
array[j + 1] = array[j];//元素后移
k = j;//元素插入
}
array[k] = temp;
}
}
void printArray(int array[], int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d\n", array[i]);
}
}
int main()
{
int a[5] = { 0,-1,-8,9,-10 };
insertsort(a, 5);
printArray(a, 5);
return 0;
}
这就是插入排序。