现在有一个数组a=[5,4,3,2,1,0]
python实现选择排序的代码如下:
# 选择排序 def selection_sort(a: list): if a is None or len_a < 2: return for i in range(len_a): min_index = i for j in range(i + 1, len_a): if a[j] < a[min_index]: min_index = j a[i], a[min_index] = a[min_index], a[i] print(a)
选择排序逻辑解释:
1、先对数组a遍历一遍,找到最小的值为a[5],即0,然后把a[5]和a[0]交换位置,这样,最小值就来到0的位置,原本0位置上的值就来到5的位置,这时候,整个数组a的排序为[0,4,3,2,1,5]
现在,整个数组a的第一位即a[0]就确定了,为0
2、然后,从a[1]开始,再遍历一遍,找出a[1]~a[5]的最小值,最小值为a[4]位置上的1,跟a[1]上的4进行调换,这个时候,整个数组a的排序为[0,1,3,2,4,5]
现在,整个数组a的前两位即a[0]和a[1]都确定了,为0,1
3、跟前两步一样的操作,最小值跟a[2]位置上的数交换,整个数组a的排序为[0,1,2,3,4,5]
现在,整个数组a的前三位即a[0],a[1],a[2]都确定了,为0,1,2
4、跟前三步一样的操作,最小值跟a[3]位置上的数交换,因为最小值为3,所以不需要交换
5、跟前四步一样的操作,最小值跟a[4]位置上的数交换,因为最小值为4,所以不需要交换
这个时候整个逻辑就结束了,结果为[0,1,2,3,4,5]
python写选择排序算法的解释:
1、首先,如果入参数组就一个值,即数组的长度小于2,比如[1],它根本不需要排序,就直接返回
2、在第一个for循环中,定义一个当前最小值的坐标,即min_index,初始值从a[0]开始(min_index=i,i的初始值为0),即上面选择排序逻辑中我需要从a[0]开始逐个确认每个位置的最小值,最后才能排好序。
3、然后就开始逐个遍历,记录遍历结果中的最小值,把最小值的坐标记录到min_index中,遍历结束后,把最小值跟a[i]进行交换
这样就得到最后的结果了