基本概念
● 插入排序(binary insertion sort):是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。
其与直接排序算法最大的区别在于查找插入位置时使用的是二分查找的方式,在速度上有一定提升。
算法描述和分析
● 一般来说,二分插入排序都采用“就地”数组上实现。具体算法描述如下:
1、从第一个元素开始,该元素可以认为已经被排序
2 取出下一个元素,在已经排序的元素序列中使用二分查找从后向前扫描
3、直到找到已排序的元素小于或者等于新元素的位置
4、 找到该位置后,如果该元素(已排序)大于新元素,将该元素移到下一位置
5、将新元素插入到该位置
6、 重复步骤2~6
二分查找比顺序搜索查找快,所以二分插入排序就平均性能来说比直接插入排序要快。
它所需的排序码比较次数与待排序对象序列的初始排列无关,仅依赖于对象个数。
在插入第i个对象时,需要经过