Python 折半插入排序

来源:互联网 发布:linux中反引号的作用 编辑:程序博客网 时间:2024/06/05 14:17

基本思想

对直接插入排序寻找合适插入点时,用了类似二分法的寻位方法


Python实现

def binaryInsert(a):# 折半插入排序: 小->大# 在直接插入排序的基础上使用了折半查找的方法     for i in xrange(1, len(a)):        index = a[i]        low = 0        hight = i - 1        while low <= hight:            mid = (low + hight) / 2            if index > a[mid]:                low = mid + 1            else:                hight = mid - 1        # 跳出循环后 low, mid 都是一样的, hight = low - 1        for j in xrange(i, low, -1):            a[j] = a[j - 1]        a[low] = index    return a


效率

虽然在查找插入点的过程优于直接插入法,但元素移动次数不变,因此复杂度依旧为:O(n^2)

0 0
原创粉丝点击