Traitor 发表于 2021-11-14 14:25

关于python的冒泡算法



列表中的 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 > n ,而应该是 n > n

ynboyinkm 发表于 2021-11-14 15:22

for i in a
if (a<a)
a=a

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



DEATHTOUCH 发表于 2021-11-14 15:24

你这像插入排序的一种变化

Phydora 发表于 2021-11-14 15:26

Phydora 发表于 2021-11-14 15:06
冒泡排序比较的是相邻两个元素的值,因此不应该使用 n > n ,而应该是 n > n

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

n =

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

print(n)

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

最后就是,如二楼所言,想图省事就直接 n.sort()(降序排序是 n.sort(reverse=True))

ryanly 发表于 2021-11-14 18:00

调试一下就能发现错误了,应该是n > n

kk159 发表于 2021-11-14 18:22

https://visualgo.net/zh/sorting7冒泡执行可以看到演示
页: [1] 2
查看完整版本: 关于python的冒泡算法