选择排序
‘’’
选择排序
‘’’
list = [3, 15, 48, 35, 4, 18, 2, 43, 8, 24, 1, 29, 6]
def selectionSort(arr):
for i in range( len( arr ) - 1 ): # 每轮都以开始的那个数为基准
# 记录最小数的索引
minIndex = i # 首先第一轮基准是3,下边以3比较
for j in range( i + 1, len( arr ) ):#i+1每次从确定后边开始比
if arr[j] < arr[minIndex]: # 2<3
minIndex = j#确定一个小的位置再往后比看有没有比它更小的
# i 不是最小数时,将 i 和最小数进行交换
if i != minIndex:
arr[i], arr[minIndex] = arr[minIndex], arr[i]
return arr
print( selectionSort( list ) )
'''
原理:遍历以第一个为基准,开始和后边比,如果后边有比基准数小的则将基准数变为那个小的数,再往
后比,如果后边还有更小的则将这个更小的数变为基准数,在往后比,比到结尾如果还有更小的则把更小
作为基准数,若没有了,则将它与最开始的基准数调换。外层for确定了开始基准数调换位置方便后边小
的数调换到遍历(每次遍历开始位置不一)开头位置,内层for确定了最小数的位置,minindex的作用是
每次内层循环将最小的数位置给它,if的作用是判断是他自己不,不是在进行交换,最后与外层循环确定
最开始那个进行交换,外层每循环一次将确定一个最小的放在前边,外层循环完就从小到大排序好了。
'''
for i in range(len(list)-1):
small=i
for r in range(i+1,len(list)):
if list[r]<list[small]:
small=r
if i !=small:
list[i], list[small] = list[i], list[small]