#!/usr/bin/python#coding: utf-8def binary_insert_sort ( li , num ):"折半插入排序"for i in range ( 1 , num ):key = li [ i ]left = 0right = i - 1# 查找当前可以防止的位置while left <= right :middle = ( left + right ) // 2if key >= li [ middle ]:left = middle + 1else :right = middle - 1# 都往后移位,用来放置keyfor j in range ( i - 1 , left - 1 , - 1 ):li [ j + 1 ] = li [ j ]li [ left ] = keyif __name__ == "__main__" :li = [ 95 , 45 , 15 , 78 , 84 , 51 , 24 , 12 ]binary_insert_sort ( li , len ( li ))print li
折半(二分)插入排序
最新推荐文章于 2022-08-02 16:51:57 发布