参考:www.bilibili.com/video/BV1E4… 选择排序和冒泡排序挺像,不过发生交换的次数大大减小,时间上应该比冒泡排序短很多
实现
import datetime
import random
from functools import wraps
# [5,4,3,2,1]
tempList = [random.randint(0, 100000) for x in range(50000)]
def logger(function):
@wraps(function)
def wrapper(*args, **kwargs):
start = datetime.datetime.now().timestamp()
result = function(*args, **kwargs)
end = datetime.datetime.now().timestamp()
print(f"总共花了{int(end - start)}s")
return result
return wrapper
@logger
def insertSort(l: list):
# 次数
for i in range(len(l) - 1):
# 假设是最小值
minValue = l[i]
minIndex = i
for j in range(i + 1, len(l)):
if minValue > l[j]:
minValue = l[j]
minIndex = j
# 说明需要交换
if minIndex != i:
# 注意顺序
l[minIndex] = l[i]
l[i] = minValue
return l
insertSort(tempList)