; ;

算法之--快速排序

选择排序

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

以下图片来自知乎 忆臻  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更小,就进行交换,基于这样的原理,所以第一趟就会找到第一个最小的值,第二趟找到第二个最小的值

posted @ 2022-03-25 20:58  做梦的人-  阅读(34)  评论(0编辑  收藏  举报