标签:结构 数据结构和算法 思路 dex 遍历 选择 __name__ code selection
################## 选择排序 #######################
""" 选择排序 思路是怎么样的? 现在有一个序列:alist = [54,226,93,17,77,31,44,55,20] 先遍历所有的,n个,把最小的放到最前面, alist = [17, 54,226,93,77,31,44,55,20] 然后遍历剩下的,n-1个,把最小的放到前面去, alist = [17,20 54,226,93,77,31,44,55] 然后一直循环,结束之后,整个的序列就是从小打到的了, 程序实现 第一轮,把下标为0的最为最小值, min=0,然后遍历,遇到把它还小的就开始做交换, alist[0],alist[3] = alist[3],alist[0] 第二轮,把下标为1的最为最小值, min=1,然后遍历,遇到把它还小的就开始做交换, alist[1],alist[8] = alist[8],alist[0] 第三轮,把下标为2的最为最小值, min=2,然后遍历,遇到把它还小的就开始做交换, alist[2],alist[5] = alist[5],alist[0] 所以整体的思路就是把整个的序列分为两部分,始终是把后面的最小的放到前面去, """
################## 选择排序 #######################
# 第一版:
def selection_sort(alist):
n = len(alist)
# 需要进行n-1次选择操作
for i in range(n-1):
# 记录最小位置
min_index = i
# 从i+1位置到末尾选择出最小数据
for j in range(i+1, n):
if alist[j] < alist[min_index]:
min_index = j
# 如果选择出的数据不在正确位置,进行交换
alist[i], alist[min_index] = alist[min_index], alist[i]
# 第二版:
def selection_sort2(alist):
n = len(alist)
# 需要进行n-1次选择操作
for i in range(n-1):
# 记录最小位置
min_index = i
# 从i+1位置到末尾选择出最小数据
for j in range(i+1, n):
if alist[j] < alist[min_index]:
min_index = j
# 如果选择出的数据不在正确位置,进行交换
if min_index != i:
alist[i], alist[min_index] = alist[min_index], alist[i]
if __name__ == ‘__main__‘:
alist = [54,226,93,17,77,31,44,55,20]
print(alist)
selection_sort(alist)
print(alist)
################## 选择排序 #######################
################## 选择排序 #######################
################## 选择排序 #######################
标签:结构 数据结构和算法 思路 dex 遍历 选择 __name__ code selection
原文地址:https://www.cnblogs.com/andy0816/p/12348379.html