直接插入排序 : 将一个记录插入到已排序的有序表中
思路 判断是否比前一个小, 如果小,放在数组第一个或者其他标志位 ,他的位置留出来放前面移动过来的排序,由于前面是排好序的,而且就插一个,所以位置刚好
数据 12 3 59 2 89 14 18
1 3 12 59 2 89 14 18 3比12小 而且 前面没有元素比3大
2 3 12 59 2 89 14 18 59不比12小不动
3 2 3 12 59 89 14 18 2 比 59 12 3 都要小 所以移动到最前 剩下的不写了
void InsertSort (int k [] ,int n)
{
int i ,j ;
for( i=2;i<n ;i++)
{
if(k[i]<k[i-1])
{
k[0]=k[i];
k[i]=k[i-1];
for(j=i-2; k[j]>k[0];j--) //j=i-2是因为i-1已经确定比i小了
{
k[j+1]= k[j];
}
k[j+1] =k[0];
}
}
}