选择排序和冒泡排序很相似
选择排序是定死第一个数,用这个数与剩余的每个数进行对比,这样最后就会得到最小的数放在第一个位置,第二轮定死为第二个,与剩下的再进行对比…最后最大的就会放到最后,排序完成
就比如在一堆大小不一的球中进行选择(以从小到大,先选最小球为例):
- 选择一个基准球
- 将基准球和余下的球进行一一比较,如果比基准球小,则进行交换
- 第一轮过后获得最小的球
- 在挑一个基准球,执行相同的动作得到次小的球
- 继续执行步骤4,直到排序完成
list = [12,343,23,234,56677,332,34,45]
for i in range(len(list)-1):
for j in range(i+1,len(list)-1):
if list[i] > list[j]:
list[i],list[j] = list[j],list[i]
print(list)
-
第一个 for 循环控制进行对比的轮数,到最后一组的时候其实以及排序完成,不用再来一轮,最后的对比轮数为len(List)-1
-
第二个 for 循环是控制对比的次数,由于每次定死一个,而且第一轮第一个固定最小,第二轮第一个第二个固定…
对比的区间应该定为 [ i+1, len(List)-1] -
因为每次对比都是定死前面的,第一轮定死第一个,第二轮第二个与后面对比,第三轮第三个…
所以应该定死轮数 i 代表的那个数,与后面每个j进行对比。即判断 List[ i ] 是否大于 List[ j ],然后进行交换