'''
选择排序与冒泡排序有类似,冒泡是匹配最大的数据找出来放最后,选择排序是找最小的数据放最前.
选择排序是把数据分成了两块区域,把从右边找到的最小数据,放在左边.
选择排序是不稳定的
'''
def select_sort(alist):
for j in range(len(alist)-1): # 此处j表示右边这组未经排序的数据中,第一个数据的下标
min_index = j # 先令该下标为最小数据的下标,等到找到比它还小的数据时,在进行位置的交换
for i in range(j+1, len(alist)): # 从右边第一个数据开始,在右边数据中找出比当前下标数据小的数据,交换二者的位置.
if alist[min_index] > alist[i]: # 当遇到比当前下标小的数据时,交换该数据与当前数据的下标
min_index = i # 交换两个数据的下标
alist[j], alist[min_index] = alist[min_index], alist[j] # 交换左边最后一个数据与找到的最小数据之间的位置.注意此步需要在第一个for
# 循环中执行,不可放错在了第二个for循环当中
if __name__ == '__main__':
li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(li)
select_sort(li)
print(li)