1.思路整理
所谓选择排序,就像在给幼儿园老师给小朋友排序,最矮的坐第一排,第二高坐第二排,第三高坐第三排,最高坐最后一排。
用列表或数组实现,即是选择固定的角标给予选定值,比如将角标为0出设定为最小值,将角标为1处设定为第二小值,依次遍历到末尾,就达到了排序的目的,而找到这些符合条件的值的方法,就是在数组或列表中的其他元素的寻找,在拿出来依次放入我选择放入的角标中。
2.举例说明
下面举例一个列表:
值:2 5 1 4 8
标:0 1 2 3 4
第1轮.用下标0与之后的所有下标进行比较,如果大于则交换
下标0与下标1对比 2<5 不交换 此次执行后下标0 值为2
下标0与下标2对比 2>1 交换 此次执行后下标0 值为1
下标0与下标3对比 1<4 不交换 此次执行后下标0 值为1
下标0与下标4对比 1<8 不交换 此次执行后下标0 值为1
本轮循环结束,交换后的值为:
值:1 5 2 4 8
标:0 1 2 3 4
第2轮.用下标1与之后的所有下标进行比较,如果大于则交换
下标1与下标2对比 5>2 交换 此次执行后下标1 值为2
下标1与下标3对比 2<4 不交换 此次执行后下标1 值为2
下标1与下标4对比 2<8 不交换 此次执行后下标1 值为2
本轮循环结束,交换后的值为:
值:1 2 5 4 8
标:0 1 2 3 4
第3轮.用下标2与之后的所有下标进行比较,如果大于则交换
下标2与下标3对比 5>4 交换 此次执行后下标2 值为4
下标2与下标4对比 2<4 不交换 此次执行后下标2 值为4
本轮循环结束,交换后的值为:
值:1 2 4 5 8
标:0 1 2 3 4
第4轮.用下标3与之后的所有下标进行比较,如果大于则交换
下标3与下标4对比 5<8 不交换 此次执行后下标3 值为5
本轮循环结束,交换后的值为:
值:1 2 4 5 8
标:0 1 2 3 4
循环结束
3.代码实现
#选择排序
#定义了一个10~1的列表
t = list(range(10,0,-1))
#遍历列表中需要选定大小的下标,由于最后一位不用排到我们取len(t)-1
for i in range(len(t)-1):
#将选定大小下标后面所有的元素取出,用于对比,故取初值i+1
for j in range(i+1,len(t)):
#对比
if t[i] > t[j]:
#大于则交换(此交换方法为python特有)
t[i],t[j]=t[j],t[i]
#打印排序后的结果
print(t)