Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
气泡排序在python中排序不正确_Python_Bubble Sort - Fatal编程技术网

气泡排序在python中排序不正确

气泡排序在python中排序不正确,python,bubble-sort,Python,Bubble Sort,我正在用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, 1

我正在用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]

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

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

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弄混了。应改为:

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]

你应该使用
j
j+1
作为索引,而不是
i
i+1
。提示:你没有使用j作为索引。我看了几遍我的代码,但没有注意到我误读了i和j。。非常感谢。