(图片在网络搜索,如侵权,请联系删除)
插入排序(InsertSort),如扑克牌插牌一样,通过构建有序序列,将元素插入一个已经排序好的序列中。插入排序是对冒泡排序的改进。
插入排序同样通过构建嵌套for的形式进行排序。
for (i=1; i<n; i++)
for(j=i-1; j >= 0; j--)
将a[0]看成是已经排好序的序列,所以从第2个元素(i=1)开始遍历,直到最后一个;
然后进行比较的是已经排序好的元素,即从j=i-1
开始,向前遍历,直到找到其位置;
插入元素的位置由于不是交换,所以可以先把插入的元素的位置空出来,然后比较前面的元素,将位置挪动,方便元素插入。
参考学习
1.白话经典算法系列之二 直接插入排序的三种实现
http://blog.csdn.net/morewindows/article/details/6665714
- 参考代码实现
性能分析
平均时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:稳定