选择排序(解释都在源码里)
选择排序思想
第一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,
然后再从剩余的未排序元素中寻找到最小元素,
然后放到已排序的序列的末尾。
以此类推,直到全部待排序的数据元素的个数为零
'''选择排序
内层循环:
第一次从待排序的数据元素中选出最小的一个元素,
存放在序列的起始位置,
然后再从剩余的未排序元素中寻找到最小元素,
然后放到已排序的序列的末尾。
外层循环:
以此类推,直到全部待排序的数据元素的个数为零
'''
#将列表分成有序跟无序两部分,
#每次在无序列表中选择最小的放在有序列表末尾
#假设无序列表的第一个为最小的,
#跟其他的一个个比较
#如果找到更小就标记下标,直到末尾,
#最后将找到的最小值跟跟假设的最小值的位置交换
li = [10,9,8,7,6,5,1,2,3,4]
l = len(li)
for j in range(0, l):
min_index = j #每次假设无序列表的第一个为最小值
for i in range(j+1, l):
if li[min_index] > li[i]:
min_index = i #标记最小值位置
li[j], li[min_index] = li[min_index], li[j] #跟无序列表第0个交换位置,即放到有序列表末尾
print(li)
#最差最优时间复杂度:O(n平方)