【发布时间】:2018-06-30 14:07:36
【问题描述】:
这个程序是用python编写的。它的目标是通过交换将 ONE 的位置数移到正确的位置,然后输出它所花费的交换数。所以它与冒泡排序非常相似,只是程序不必使用与其相邻的数字进行切换。请参阅下面的示例
示例输入:
5 2 4 7 7 3
样本输出:2
示例说明:
24773 - 5 个整数的起始集
24377 - 将 3 交换为前 7(第一次交换)(7 不在 3 旁边)
23477 - 交换 3 和 4 以获得最小到最大的数字(第二次交换)
这是我当前的 Python 代码。它采用传统的冒泡排序方法。
def bubbleSort(alist):
times = 0
for passnum in range(len(alist)-1,0,-1):
for i in range(passnum):
if alist[i]>alist[i+1]:
times = times + 1
temp = alist[i]
alist[i] = alist[i+1]
alist[i+1] = temp
print(alist)
return(times)
arrin = [5, 2, 4, 7, 7, 3]
print(bubbleSort(arrin))
这个输出:3
这个答案是不正确的,因为冒泡排序将 3 与相邻的 7 交换,将输出增加到 3(应该是 2)。
我将如何修改此代码以满足示例的要求?
【问题讨论】:
-
感谢@srig 的提醒。你能帮帮我吗?
标签: python sorting bubble-sort