吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 734|回复: 11
收起左侧

[求助] 关于python的冒泡算法

[复制链接]
Traitor 发表于 2021-11-14 14:25
QQ截图20211114142352.png

列表中的 1 被排序到列表的第一位了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kof21411 发表于 2021-11-14 15:00
你可以了解Python List sort()方法
zj1977lsz 发表于 2021-11-14 15:06
我一直没搞懂什么是冒泡算法,现在仍然没搞懂
blackboard 发表于 2021-11-14 15:06
Phydora 发表于 2021-11-14 15:06
冒泡排序比较的是相邻两个元素的值,因此不应该使用 n[i] > n[j+1] ,而应该是 n[j] > n[j+1]

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Traitor + 1 + 1 谢谢@Thanks!

查看全部评分

ynboyinkm 发表于 2021-11-14 15:22
for i in a
if (a[1]<a[i])
a[1]=a[i]

这样就人上循环就得到最大值,这样两个for循环嵌套就可以得到非序
不过这只是了解算法了,python中有numy和pands库,很方算就得到排序



DEATHTOUCH 发表于 2021-11-14 15:24
你这像插入排序的一种变化
Phydora 发表于 2021-11-14 15:26
Phydora 发表于 2021-11-14 15:06
冒泡排序比较的是相邻两个元素的值,因此不应该使用 n > n[j+1] ,而应该是 n[j] > n[j+1]

换句话说,i 只用于决定当前排序的轮数,而 j 才是决定排序对象的那个参数
具体代码如下,我这是正序排序,如果需要逆序排序,将“>”改为“<”即可

[Python] 纯文本查看 复制代码
n = [20,30,10,50,16,5,4,5,1,6,6,20,15,9,10,8,3]

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

print(n)


另外注意 j 的范围用的是 len(n)-i-1 ,因为已经排序好的元素没比较重复比较,浪费资源,因此这里要减 i

最后就是,如二楼所言,想图省事就直接 n.sort()(降序排序是 n.sort(reverse=True))
ryanly 发表于 2021-11-14 18:00
调试一下就能发现错误了,应该是n[j] > n[j+1]
kk159 发表于 2021-11-14 18:22
https://visualgo.net/zh/sorting  7冒泡执行可以看到演示
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表