【算法】python实现选择排序并解释逻辑

现在有一个数组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]进行交换

这样就得到最后的结果了

原文地址:https://www.cnblogs.com/fengzx120/p/13338247.html