选择排序(Python)

选择排序的思路较好理解,先将列表便利一遍找到最小(最大)的数放在第一位,然后遍历剩余列表元素找出最小(最大)的数放在第二位...一次类推,这就像他的名字一样,每次便利都选择最小(最大)的数放在对应的位置。

下面我用动图给大家演示一下。

是不是更好理解了呢(●'◡'●)

当然具体的实现也不难,接下来我用代码给大家实现一下。

def select_sort(lst):
    for i in range(len(lst)-1):
        min_loc=i   # 假定最小位置为i
        for j in range(i,len(lst)):   # 无序区
            if lst[j]<lst[min_loc]:
                min_loc=j
        lst[i],lst[min_loc]=lst[min_loc],lst[i]     #交换位置
    return lst


lst=list(range(1,10))
import random
random.shuffle(lst)
print(lst)
select_sort(lst)
print(lst)

#使用random的shuffle方法打乱列表

用i来代替无序区的位置,假设i就是最小数的位置(但其实并不是)将它赋值给min_loc,循环剩下列表(无序区)的元素找出最小(最大)的数的下标,循环完毕时可以确定了最小位置的下标,将他赋值给给min_loc,这时min_loc是真正的最小位置,然后lst[min_loc]与lst[i]交换即可,为什么使用交换呢?原列表元素交换是原地排序,可以节省空间哟,往后同理。循环结束列表即排序完成。

结果为:

 

当然,为了更好的体现这个过程我们可以在每次循环结束后打印一下这个列表看看改动的地方

def select_sort(lst):
    for i in range(len(lst)-1):
        min_loc=i   # 假定最小位置为i
        for j in range(i,len(lst)):   # 无序区
            if lst[j]<lst[min_loc]:
                min_loc=j
        lst[i],lst[min_loc]=lst[min_loc],lst[i]     # 交换位置
        print(lst)      # 改动在这里哦
    return lst

结果为:

 选择排序就是这样啦!

🌸🌸🌸🌸🌸🌸完结撒花!🌸🌸🌸🌸🌸🌸

如有疑问或错误,欢迎大家评论区留言指出,谢谢支持!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值