插入排序

经过构建有序序列,对于未排序部分,在已排序序列中从后向前扫描,找到相应的位置并插入。
若是输入序列已是排好序的话,插入排序出现最佳状况。
若是输入序列是逆序排列的,将出现最坏状况。
若是比较操做的代价比交换操做大的话,能够采用二分查找法来减小比较操做的次数,即二分查找插入排序。html

from random import shuffle

nums = list(range(10))
shuffle(nums)

# 将第一个元素做为有序序列
for i in range(1, len(nums)):
    # 遍历有序序列,每处理一趟固定一个元素
    for j in range(i, 0, -1):
        # 当元素小于有序序列的最大值时,依次左移,将元素插入合适位置
        if nums[j] < nums[j-1]:
            nums[j-1], nums[j] = nums[j], nums[j-1]
        # 若是元素大于等于有序序列最大值,则不动
        else:
            break

print(nums)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

参考:
https://zh.wikipedia.org/wiki/插入排序
http://www.cnblogs.com/fanyong/archive/2012/03/23/2413553.htmldom

相关文章
相关标签/搜索