【问题标题】:Bubble sort not sorting properly in python冒泡排序在python中没有正确排序
【发布时间】:2020-05-24 22:51:30
【问题描述】:

我正在 Python 中进行冒泡排序,但不知道为什么它不能正确排序。

N = [80000, 20, 40 , 50, 10000, 50, 60, 90, 100, 5000, 22]
for i in range(len(N)-1):
    for j in range(len(N)-i-1):
        if(N[i] > N[i+1]):
            N[i], N[i+1] = N[i+1], N[i]
print(N)

这是这段代码的结果

[20, 40, 50, 10000, 50, 60, 90, 100, 5000, 22, 80000]

【问题讨论】:

  • 你应该使用jj+1作为索引,而不是ii+1
  • 提示:你没有使用 j 作为索引。

标签: python bubble-sort


【解决方案1】:

我相信您混淆了索引 i 和 j。它应该是:

N = [80000, 20, 40 , 50, 10000, 50, 60, 90, 100, 5000, 22]
for i in range(len(N)-1):
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)

输出:

[20, 22, 40, 50, 50, 60, 90, 100, 5000, 10000, 80000]

【讨论】:

    【解决方案2】:

    您应该将N[j]N[j+1] 进行比较,因为如果它们的顺序错误,您需要反复交换 相邻 elements

    N = [80000, 20, 40 , 50, 10000, 50, 60, 90, 100, 5000, 22]
    for i in range(len(N)-1):
        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)
    

    输出

    [20, 22, 40, 50, 50, 60, 90, 100, 5000, 10000, 80000]
    

    【讨论】:

    • 我看了好几遍我的代码,但没有注意到我误读了 i 和 j.. 谢谢!
    【解决方案3】:

    您应该在第二个循环的主体中使用“j”而不是“i”。否则,两个循环都没有意义。只有外层循环被有效执行。

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 2021-12-15
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多