由N - 1趟排序组成,设P是排序趟数,从1到N - 1,每次保证从位置0到位置P - 1的元素是排序的,本质是每次将一个新的元素插入到前面的排序数组中,代码如下:
void InsertionSort(int *a, int N)
{
int j, P, Tmp;
/* 每趟让排序的数量增加1,即将后面的一个插入到前面的排序数组中 */
for (P = 1; P < N; P++)
{
Tmp = a[P];
for (j = P; j > 0 && a[j - 1] > Tmp; j--)
a[j] = a[j - 1];
a[j] = Tmp;
}
}
分析:
时间界:平均,若数组是排序的,那么只需要O(N)时间