选择排序(Selection Sort)
算法原理:
- 每次排序默认开始的下标为i的元素为最小值,后面j的循环查找下表为i+1之后序列的最小值的下标,查找出来之后再将这个最小值与开始默认开头的最小值交换。
- 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
- 优点:移动数据的次数已知(n-1次); 缺点:比较次数多,不稳定。
'''
Creat by HuangDandan
2018-08-12
dandanhuang@sjtu.edu.cn
#插入法排序
#每次排序默认开始的下标为i的元素为最小值,后面j的循环查找下表为i+1之后序列的最小值的下标,查找出来之后再将这个最小值与开始默认开头的最小值交换。
'''
def SelectSort(Lst):
for i in range(0, len(Lst)):
vale = Lst[i] #每次循环开始默认第i个元素是最小值
min = i
for j in range(i+1, len(Lst)): #找到从i+1开始的序列中最小值的索引(下表)
if Lst[j] < vale:
vale = Lst[j]
min = j
Lst[min], Lst[i] = Lst[i], Lst[min] #把最小值和最外面循环的第一个值交换
# 找到从i+1开始的序列中最小值的索引(下标)
def SelectSort(Lst):
for i in range(0, len(Lst)):
#vale = Lst[i] #每次循环开始默认第i个元素是最小值
min = i
for j in range(i+1, len(Lst)): #找到从i+1开始的序列中最小值的索引(下表),这里的Lst[min]的最小值通过min=j进行更新,所以是对的
if Lst[j] < Lst[min]:
#vale = Lst[j]
min = j
Lst[min], Lst[i] = Lst[i], Lst[min] #把最小值和最外面循环的第一个值交换
参考书籍:裘宗燕 数据结构与算法:Python的语言描述
参考博客:
https://www.jb51.net/article/123664.htm?utm_medium=referral
https://blog.csdn.net/bitboss/article/details/51559034
https://www.cnblogs.com/chengxiao/p/6104371.html