插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。
一、直接插入排序
直接插入排序(insert sorting)思想:当插入第i个元素时,前面的v[0],v[1],v[2]......v[i-1],已经排好序了.这时用v[i]的插入码与v[i-1],v[i-2],......排序码进行比较,找到插入的位置即插入v[i],原来位置上的元素从后向前依次后移。
template
void InsertSort(T a[],int n)
{
for (int i = 1;i < n;++i)
{
int tmp = a[i];
int j;
for (j = i-1;j >= 0&&a[j]>tm p;--j)
a[j+1] = a[j];
a[j+1] = tmp;
}
}