折半插入排序
折半插入排序的基本操作是在一个有序表中进行查找和插入,这个“查找”操作可利用“折半查找”,由此进行的插入排序称之为折半插入排序。
- 从前面的有序子表中查找出待插入元素应该被插入的位置
- 给插入位置腾出空间,将待插入元素复制到表中的插入位置。
在该算法中,总是边比较边移动元素。
- 先折半查找出元素的待插入位置,然后统一移动待插入位置之后所有的元素。
折半插入排序只适合排序表是顺序存储的情况。
- 折半插入排序仅减少了比较元素的次数,该比较次数与待排序表的初始状态无关,仅取决于表中元素的个数。约为 O ( n l o g 2 n ) O(n{log}_2{n}) O(nlog2n)
- 元素的移动次数并未改变,它依赖于排序表的初始状态。
- 折半插入排序是一种稳定的排序方法。
- 折半插入的时间复杂度为 O ( n 2 ) O(n^2) O(n2)