Python,學霸
閱讀指南
原理
例項
輸出
當我們使用插入排序時,從第二個元素開始,我們將當前元素與已經排序好的元素序列進行比較。如果當前元素小於已排序序列中的某個元素,那麽就將這個元素後移一位,為當前元素騰出位置。重復這個過程,直到找到當前元素應該插入的位置,然後將其插入其中。透過這樣的方式,逐步將未排序的元素逐個插入到已排序的序列中,最終完成整個序列的排序。這就好比是在玩撲克牌時,我們將手中的牌逐個插入到已經按照大小順序排好的牌堆中一樣。
例項
# 插入排序
import time
def print_data(data):
print('\r', ' '.join(['*' * num for num in data]), end='')
def insertion_sort(data):
start_time = time.time()
for i in range(1, len(data)):
key = data[i]
j = i - 1
while j >= 0 and key < data[j]:
data[j + 1] = data[j]
j -= 1
data[j + 1] = key
#打印排序結果
print_data(data)
#增加等待時間
time.sleep(0.5)
end_time = time.time()
#計算排序用時
sort_time = end_time - start_time
print("\n插入排序用時:", sort_time)
data = [5, 9, 1, 4, 6]
print("原始數據:", ' '.join(['*' * num for num in data]))
insertion_sort(data.copy())
輸出
原始數據: ***** ********* * **** ******
* **** ***** ****** *********
插入排序用時: 2.004281044006347