################## 选择排序 #######################
""" 选择排序 思路是怎么样的? 现在有一个序列: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)
################## 选择排序 #######################
################## 选择排序 #######################
################## 选择排序 #######################