直接插入排序是一种简单的排序,以第i个记录为岗哨,将它插入到一个已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。
直接插入排序的算法如下:
void StraightInsertSort(List R,int n)
{
int i,j;
for(i=2;i<=n;i++) //从第二个记录进行插入
{
R[0]=R[i]; //第i个记录复制为岗哨,在while循环里面种“监视”数组下标变量j是否越界
j=i-1;
while(R[0].key<R[j].key) //与岗哨比较,直至键值不大于岗哨键值
{
R[j+1]=R[j];
j--;
}
R[j+1]=R[0]; //将第i个记录插入到序列中
}
}