选择排序
思想
一趟遍历记录最小的数, 放到第一个位置
再一趟遍历记录剩余列表中最小的数, 继续放置
关键点:
无序区: 第i趟, 无序区为 i~n-1
最小数的位置
import random
from cal_time import get_running_time
@get_running_time
def select_sort(li):
n = len(li)
for i in range(n - 1): # 执行n-1趟
min_pos = i # 无序区最小值位置
for j in range(i + 1, n): # 执行第i趟时, 无序范围 i~n-1
if li[j] < li[min_pos]:
min_pos = j
if min_pos != i:
li[i], li[min_pos] = li[min_pos], li[i]
return li
li = [i for i in range(0, 10000, 4)]
random.shuffle(li)
print(li)
print(select_sort(li))