Python—插入排序算法

# 插入排序,时间复杂度O(n²)
def insert_sort(arr):
    """
    插入排序;以朴克牌为例,从小到大排序。摸到的牌current与手里的每张牌进行对比,
    手里的牌大于current,则手里的牌往后移;手里的最后一张牌小于current,current最大,结束循环。
    :param arr:
    :return:
    """
    for i in range(1, len(arr)):  # 摸到的牌的index
        # 摸到的牌
        current = arr[i]
        # 手里最后一张牌的index
        pre_index = i - 1
        while pre_index >= 0 and arr[pre_index] > current:
            arr[pre_index + 1] = arr[pre_index]
            # 继续和前一张牌进行比较
            pre_index -= 1
        # 手里的最后一张牌小于current,current最大
        arr[pre_index + 1] = current
    return arr


num = [4, 5, 3, 7, 6, 9, 8, 10]
print(insert_sort(num))

 

posted @ 2019-07-08 22:52  ZivLi  阅读(135)  评论(0编辑  收藏