算法简单,网上有一堆现成的讲解,不做赘述了。本算法根据算法导论伪代码编写。C++实现 VS 2010中测试。
void insertionSort(int * array, int num)
{
int tmp,j;
for (size_t i = 1; i < num; i++)
{
tmp = array[i];
j = i - 1;
while (j>=0 &&array[j]>tmp){
array[j + 1] = array[j];
j--;
}
array[j+ 1] = tmp;
}
}
特点:算法简单,代码简洁。空间消耗少,属于In-place 操作,但是时间复杂度较高,最坏情况和平均情况是 O(n2) ,最好情况是 O(n) 。算法稳定。