选择排序法也算法枚举法的应用,就是反复从未排序的数列中取出最小的元素,加入到另一个数列中,最后的结果即为已经排好序的数列,选择排序法可使用两种方式排序,一种为在所有的数据中,从小到大排序,将最大值放入第一个位置,另一个是从小到大排序,将最大值放入最后一个位置,例如,一开始在所有的数据中挑选一个最小项放在第一位置(假设是从小到大排序),再从第二项开始挑选一个最小项放在第二个位置,以此重复,直到完成排序为止。
下面我们仍然用 55,23,87,62,16数列从小到大的排序过程来说明选择排序法的验算流程,原始数据如图
1 首先找到次数列中最小值后与数列中的第一个元素交换,
2 从第二个值开始找,找到此数列中(不包含第一个)的最小值,再和第二个值交换,如图
3 从第三个值开始找,找到此数列中(不包含第一个,第二个)的最小值,再和第三个值交换,
4 从第四个值开始找,找到数列中(不含第三,第二,第一)的最小值,再和第四个值交换,排序完成。
def showdata(data): for i in range(8): print("%3d" % data[i], end="") print() def select(data): for i in range(7): for j in range(i+1,8): if data[i]>data[j]: data[i],data[j] = data[j], data[i] print() data = [16,25,39,27,12,8,45,63] print("原始值:") for i in range(8): print("%3d" % data[i], end="") print("\n---------------------------------------") select(data) print("排序后的数据:") for i in range(8): print("%3d" % data[i], end="") print("")