选择排序
- 一趟排序记录最小的数,放到第一个位置
- 再一趟排序记录列表无序区最小的数,放在第二个位置
- 时间复杂度O(n^2)
调用函数
def Seclect_sort_func(li):
sort_list = []
for i in range(len(li)):
min_li = min(li)
sort_list.append(min_li)
li.remove(min_li)
return sort_list
li = [9,2,5,6,3,4,8,1,7]
Seclect_sort_func(li)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
优化,原地排序
def Select_sort(li):
for i in range(len(li)-1):
min_loc = i
for j in range(i+1,len(li)): # 一趟找出最小的值,位置
if li[j] < li[min_loc]:
min_loc = j
li[j],li[min_loc] = li[min_loc],li[j]
return li
li = [9,2,5,6,3,4,8,1,7,10,18,16,13,15,11]
Seclect_sort_func(li)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 18]