Python实现选择排序算法

选择排序算法的基本思想是:假如一个列表中有n个数据,从列表中选出最小的一个数据与第一位数据进行交换,然后在剩下的数据中从第二位开始选择最小的数据与第二位的数据进行交换,以此类推,在进行了n-1次排序后,列表的数据就会按照从小到大的方式排序好。

下面可以看一个例子:

list = [5,4,8,9,2,3,1,6,7,10,5,12,8]

用Python对上面的列表进行选择排序

for i in range(len(list)-1):
    for j in range(len(list[i+1:])):
        if list[i] > list[i+1:][j]:   
             list[i+1+j],list[i]= list[i],list[i+1+j]

首先进行两个for循环,第一个是进行n-1次循环,第二个是把第i个数据与它后面的数据进行比较,如果它后面有小于它的数据,就把它们两个数据进行互换,在进行n-1次循环后,所有的数据就已排序好了。

可以看下每一次的排序过程
在这里插入图片描述

要注意的地方:
如果要交换列表里的两个数据不能用下面这种方式:

list[i], list[i+1:][j] = list[i+1:][j], list[i]

因为list[i+1:]会生成一个新的列表,上面交换的是原列表的list[i]与这个新列表的
list[i+1:][j]交换了数据,只会改变list[i],并不会改变list在i后面的数据,所以用list[i+1+j]来代替list[i+1:][j]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值