气泡排序在python中无法正确排序

问题描述 投票:2回答:3

我正在用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]
python bubble-sort
3个回答
3
投票

您应该将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]

3
投票

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


2
投票

我相信您将索引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]
© www.soinside.com 2019 - 2024. All rights reserved.