简单排序算法包括选择排序、冒泡排序、桶排序和插入排序,本节介绍选择排序这种简单排序算法。
选择排序
基本思想
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,按照顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。
排序过程
例如:
初始:[5 4 6 8 7 1 2 3]
第一趟排序后 1 [4 6 8 7 5 2 3]
第二趟排序后 1 2 [6 8 7 5 4 3]
第三趟排序后 1 2 3 [8 7 5 4 6]
第四趟排序后 1 2 3 4 [7 5 8 6]
第五趟排序后 1 2 3 4 5 [7 8 6]
第六趟排序后 1 2 3 4 5 6 [8 7]
第七趟排序后 1 2 3 4 5 6 7 [8]
最后排序结果 1 2 3 4 5 6 7 8
对应代码:
def selection_sort(a):
n = len(a)#n=8
for i in range(n - 1):#for循环遍历从0开始的8个位置
k = i#把每一个位置都赋值给k一遍
# print(k)
for j in range(i + 1, n):#从1开始的7个位置
# print(j)
if a[j] < a[k]:#如果a[1]<a[0](4<5)
k = j#把j的值1,赋值给原为0的k(意义:将第一号的数字与后边七个数字中最小的一个拿出来比较)
if k != i:#如果k被赋予新值,则进行下一步
temp = a[i]#temp=5
a[i] = a[k]#a[0]=4(原a[0]=5)
a[k] = temp#再把temp=4赋值给a[1]=4
# 这样本来a[0]=5,a[1]=4,现在位置正好相反(意义:将后边数字中最小的一个数字放在最前面的位置)
arr = [5 ,4 ,6 ,8 ,7, 1, 2 ,3]
selection_sort(arr)
print(arr)