选择排序:
它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零
以下图片来自知乎 忆臻 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更小,就进行交换,基于这样的原理,所以第一趟就会找到第一个最小的值,第二趟找到第二个最小的值