Python冒泡排序循环问题
所以,我以前(在学校里)有点用python编程,但最近我又重新开始了。我有两个不同的for循环,一个是我自己做的(不起作用,已经散列出来),另一个是有效的(在它上面的一行) 我想知道为什么散列出来的代码在冒泡排序函数中不起作用,它仍然循环相同的次数,但由于某种原因,在计算循环次数时,99将慢慢移动到最后。但是,当倒计时时,它将在一个步骤中完成此操作。这是密码Python冒泡排序循环问题,python,python-3.x,loops,bubble-sort,Python,Python 3.x,Loops,Bubble Sort,所以,我以前(在学校里)有点用python编程,但最近我又重新开始了。我有两个不同的for循环,一个是我自己做的(不起作用,已经散列出来),另一个是有效的(在它上面的一行) 我想知道为什么散列出来的代码在冒泡排序函数中不起作用,它仍然循环相同的次数,但由于某种原因,在计算循环次数时,99将慢慢移动到最后。但是,当倒计时时,它将在一个步骤中完成此操作。这是密码 import random unsorted_list = [2, 99, 95, 59, 54, 84, 6, 77, 45, 26]
import random
unsorted_list = [2, 99, 95, 59, 54, 84, 6, 77, 45, 26]
print("The unsorted list is given as = ",unsorted_list)
def Bubble_sort(random_list):
Len_list = len(random_list)
for pass_number in range(Len_list-1,0,-1):
#for pass_number in range(0,Len_list,1):
print(pass_number)
print(random_list)
for A in range(pass_number):
if random_list[A] > random_list[A+1]:
temp = random_list[A]
random_list[A] = random_list[A+1]
random_list[A+1] = temp
Bubble_sort(unsorted_list)
我分别运行两个不同循环的结果截图可以在下面的链接中看到。链接1是倒计时(正确的方式),链接2是倒计时(不正确的结果),但我不知道它们为什么不正确
我的问题是为什么它不能双向运行
谢谢你的帮助
Extra info=在python 3.9.0中,只有一个外部循环与内部循环正确重叠 该内部循环有一个明确的功能:它将最大值向下移动到位置
pass\u number
,一次交换一次。任何其他进展都是副产品;关键的结果是最大的因素
当您从列表末尾的pass\u number
开始时(实际上,短一个:A+1
就是末尾),程序运行正常:第一个过程移动到99
末尾;下一个移动到它旁边,依此类推
重要的是要注意相反的移动:小值在每次传递时只能向左移动一个位置
当您只反转一个循环时,您现在拥有的是一个组合,它将使某些工作正确,但几乎肯定会失败。直到最后一次迭代,您才接触列表中的最后一个元素;除非最后一个元素恰好是两个最大元素中的一个,否则它就无法找到合适的位置。仅在最终迭代时才参考它
如果你想逆转这个过程,那好吧——这样做。当您反转对pass_数的计数时,还必须反转对内部循环的限制,以便第一次迭代按顺序考虑整个列表
你能从那里拿走吗?找出内部循环的变化是一个很好的介绍练习。是的,我应该可以从这里开始,这非常有帮助,谢谢。记住选择一个“最佳答案”,这样就可以存档这个问题——我想你会得到几分。