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