Python对列表排序:冒泡排序

本文介绍了如何使用Python对列表进行排序,包括直接使用内置的.sort()方法、通过循环选取最小值构建新列表以及详细解析冒泡排序的过程。冒泡排序通过不断比较相邻元素并交换位置实现排序,适用于小规模数据的排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对列表的数据进行排序:[7, 4, 3, 67, 34, 1, 8]

方法一:

直接用列表自带函数排序,.sort()方法默认升序,将参数reverse改为True,改为降序

list = [7, 4, 3, 67, 34, 1, 8]
list.sort()
print(list)

[1, 3, 4, 7, 8, 34, 67]
list.sort(reverse = True)
print(list)

[67, 34, 8, 7, 4, 3, 1]

方法二:

for循环,从list中取最小值,插入到一个空列表(用append默认插入列表最后边),然后把原列表中的最小值删除,再次取最小值,循环len(list)次。如果要求倒序,把min改为max即可

list = [7, 4, 3, 67, 34, 1, 8]
a= []
for i in range(len(list)):
    a.append(min(list))
    list.remove(min(list))
print(a)

[1, 3, 4, 7, 8, 34, 67]

方法三:

冒泡排序:从小到大,比较相邻的元素,如果前一个比后一个大,交换之。
a是外层,轮,b是内层,次
len(list) = 7
第一轮:
a = 0
b in range(6),循环执行6次
第一次 4,7比较,比较后[4,7, 3, 67, 34, 1, 8]
第二次 7,3比较,比较后[4,3, 7, 67, 34, 1, 8]
……
第六次 8,67比较,比较后[4, 3, 7, 34, 1, 8, 67]

第二轮:
a = 1
b in range(5),循环执行5次(因为在第一轮已经将最大值67判断出来,不用再和67做比较)
第一次 4,3比较,比较后[3, 4, 7, 34, 1, 8, 67]
第二次 4,7比较,比较后[3, 4, 7, 34, 1, 8, 67]
第五次34,67比较,比较后[3, 4, 7, 1, 8, 34, 67]

第三轮:
a = 2
b in range(4),循环执行4次,34,67的顺序已经比较出来
第一次3,4比较,比较后[3, 4, 7, 1, 8, 34, 67]
第二次4,7比较,比较后[3, 4, 7, 1, 8, 34, 67]
第三次7,1比较,比较后[3, 4, 1, 7, 8, 34, 67]
第四次7,8比较,比较后[3, 4, 1, 7, 8, 34, 67]

第四轮:
a = 3
b in range(3),循环执行3次,8,34,67的顺序已经比较出来
第一次3,4比较,比较后[3, 4, 1, 7, 8, 34, 67]
第二次4,1比较,比较后[3, 1, 4, 7, 8, 34, 67]
第三次4,7比较,比较后[3, 1, 4, 7, 8, 34, 67]

第五轮:
a = 4
b in range(2),循环执行两轮7,8,34,67的顺序已经比较出来
第一次3,1比较,比较后[1, 3, 4, 7, 8, 34, 67]
第二次3,4比较,比较后[1, 3, 4, 7, 8, 34, 67]

第六轮
a = 5
b in range(1),循环执行一轮,4, 7, 8, 34, 67的顺序已经比较出来
第一次,1,3比较,比较后[1, 3, 4, 7, 8, 34, 67]

此时,轮和次都循环完毕,排序完成
从大到小的顺序,把 if list[b] > list[b+1]改为if list[b] < list[b+1]即可

list = [7, 4, 3, 67, 34, 1, 8]
for a in range(len(list)):
    for b in range(len(list)-a-1):
        if list[b] > list[b+1]:
            list[b+1],list[b]=list[b],list[b+1]
print(list)     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值