插入排序(英語:insertion sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。"""插入排序"""
n = len(alist)
for j in range(1, n):
# 控制將拿到的元素放到前面有序序列中正確位置的過程
for i in range(j, 0, -1):
# 如果比前面的元素小,則往前移動
if alist[i] < alist[i - 1]:
alist[i], alist[i - 1] = alist[i - 1], alist[i]
# 否則代表比前面的所有元素都小,不需要再移動
else:
break
if __name__ == '__main__':
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print("原列表為:%s" % alist)
insert_sort(alist)
print("新列表為:%s" % alist)
# 結果如下:
# 原列表為:[54, 26, 93, 17, 77, 31, 44, 55, 20]
# 新列表為:[17, 20, 26, 31, 44, 54, 55, 77, 93]
最優時間複雜度:o(n) (公升序排列,序列已經處於公升序狀態)最壞時間複雜度:o(n2)
穩定性:穩定
python 插入排序演算法
描述 插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o n 2 是穩定的排序方法。插入演算法把要排序的陣列分成兩部分 第一部分包含了這個陣列的所有元素,但將最後乙個元素除外 讓陣列多乙個空間才有插入的位置 ...
Python演算法 插入排序
插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排序元素...
Python插入排序演算法
插入排序演算法,簡單直觀的排序演算法.工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入.python 如下 coding utf 8 import random class insert def main self arr list i for i in r...