• 算法之快速排序 做梦的人


    选择排序

    它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零

    以下图片来自知乎 忆臻  https://zhuanlan.zhihu.com/p/29889599

     我自己理解,上代码先

    def Select_Sort(li):
        for i in range(len(li)-1):#遍历的次数.i是第几趟
            #假设第一个数是最小的一个值,我们使用变量min_number表示,认为是无需去到
            min_number=i  #无序区
            for j in range(i+1,len(li)):
                if li[j]<li[min_number]:  #如果现在的数比最小的数据还要小
                    min_number=j                  #更换一下最小数
            #找到最小的位置后,就和无序区第一个值进行交换,保证无序排序中第一个拿到最小的值
            li[i],li[min_number]=li[min_number],li[i]
    if __name__ == '__main__':
        li=[3,4,2,1,5,6,8,7,9]
        Select_Sort(li)
        print(li)

    执行效果:

     执行路径:(执行思路)

    1.假设我们第一个坐标它的值就是最小的值(也就是min_number)

    2.每次就对比第二个坐标值是否比我设置的无序列的值更小,如果比设置的值还小,就把无序列中的最小的值进行交换,如果比较大不交换

    3.对比第三个值,如果比无序列中min_number更小,就进行交换,基于这样的原理,所以第一趟就会找到第一个最小的值,第二趟找到第二个最小的值

  • 相关阅读:
    玩家移动
    人物上线(激活玩家之后)
    map 玩家上线
    无锁的环形队列
    随笔
    std::bind
    如何查找文件中的schema约束
    myeclipse便捷导包方式
    21 求1+2!+3!+...+20!的和
    20 求出这个数列的前 20 项之和
  • 原文地址:https://www.cnblogs.com/chongyou/p/16056668.html
Copyright © 2020-2023  润新知