气泡排序在python中排序不正确
我正在用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
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。。非常感谢。