插入排序

經過構建有序序列,對於未排序部分,在已排序序列中從後向前掃描,找到相應的位置並插入。
若是輸入序列已是排好序的話,插入排序出現最佳狀況。
若是輸入序列是逆序排列的,將出現最壞狀況。
若是比較操做的代價比交換操做大的話,能夠採用二分查找法來減小比較操做的次數,即二分查找插入排序。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

相關文章
相關標籤/搜索