zoukankan      html  css  js  c++  java
  • 【算法】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]进行交换

    这样就得到最后的结果了

  • 相关阅读:
    saas 系统租户个性化域名&&租户绑定自己域名的解决方案(转)
    NGINX代理导致请求头header中的信息丢失问题
    Linux系统下查看硬件信息命令大全
    CentOS7开机时在进度条界面卡死(转)
    404 页面不存在
    Failed to set version to docker-desktop: exit code: -1
    centos 中Stream转 Image 报错
    CMM5级
    软件过程模型
    Some common used 3rd party packages for node cli app
  • 原文地址:https://www.cnblogs.com/fengzx120/p/13338247.html
Copyright © 2011-2022 走看看