Python气泡排序-对元素进行多次排序
其目的是获取一个正整数列表,并使用冒泡排序对其进行排序。每当您输入一个不需要多次移动单个元素的列表时,它就会工作。如何让它多次移动元素 例如,输入[3,5,4,6,7]有效,但[10,9,8,7,6]无效Python气泡排序-对元素进行多次排序,python,Python,其目的是获取一个正整数列表,并使用冒泡排序对其进行排序。每当您输入一个不需要多次移动单个元素的列表时,它就会工作。如何让它多次移动元素 例如,输入[3,5,4,6,7]有效,但[10,9,8,7,6]无效 def bubbleSort(lis): swapped = True while swapped: swapped = False for i in range(0,len(lis)-1)
def bubbleSort(lis):
swapped = True
while swapped:
swapped = False
for i in range(0,len(lis)-1):
if lis[i] > lis[i + 1] or lis[i] == lis[i+1]:
switch = lis[i]
lis[i] = lis[i+1]
lis[i+1] = switch
return lis
print(lis)
print(bubbleSort([3,5,4,6,7]))
print(bubbleSort([10,9,8,7,6]))
问题是,您只通过列表一次就返回了。等待
swapped
为False
此外,在进行切换时,必须设置已交换
swapped = True
while swapped:
swapped = False
for i in range(0,len(lis)-1):
if lis[i] > lis[i + 1] or lis[i] == lis[i+1]:
swapped = True
switch = lis[i]
lis[i] = lis[i+1]
lis[i+1] = switch
return lis
我删除了print
语句,因为您永远无法访问它,而这应该是调用程序的工作。问题是,您只通过列表一次就返回了。等待swapped
为False
此外,在进行切换时,必须设置已交换
swapped = True
while swapped:
swapped = False
for i in range(0,len(lis)-1):
if lis[i] > lis[i + 1] or lis[i] == lis[i+1]:
swapped = True
switch = lis[i]
lis[i] = lis[i+1]
lis[i+1] = switch
return lis
我删除了print
语句,因为您永远无法访问它,而这应该是调用程序的工作。当您进入while循环时,不应该将swapped设置为“false”,因为这样您只会对循环进行一次迭代。迭代整个列表时,如果没有更多交换,则应退出循环。在进入while循环时,不应将swapped设置为“false”,因为这样您只能对循环进行一次迭代。当您迭代整个列表时,如果没有更多交换,您应该退出循环。您从未重置swapped
所以它只迭代列表一次?您从未重置swapped
所以它只迭代列表一次?