Python 冒泡排序实现不工作
此冒泡排序算法每次运行时都会打印一个空列表,但确实看不出有什么问题:Python 冒泡排序实现不工作,python,algorithm,Python,Algorithm,此冒泡排序算法每次运行时都会打印一个空列表,但确实看不出有什么问题: def bubble_sort(seq): changed = True while changed: changed = False for i in range(len(seq) - 1): if seq[i] > seq[i+1]: seq[i], seq[i+1] = seq[i+1], seq[i]
def bubble_sort(seq):
changed = True
while changed:
changed = False
for i in range(len(seq) - 1):
if seq[i] > seq[i+1]:
seq[i], seq[i+1] = seq[i+1], seq[i]
changed = True
print(seq)
return None
if __name__ == '__main__':
bubble_sort(list(range(0,10,-1)))
list(范围(0,10,-1))
给出了一个空列表[],因为您的范围为0到10,步骤为-1
尝试列表(范围(10,0,-1))
导致
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
更新:如果你想递归地做,但没有作弊:-)
def bubble_排序(输入列表):
对于idx,枚举中的num(输入列表):
尝试:
如果输入_列表[idx+1]
Thaks!它工作得很好!通常,您不希望这样的函数产生自己的输出。将其排序到位或返回排序列表,保持输入不变。无论哪种方式,都让调用方决定是否输出排序列表。
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def bubble_sort(input_list):
for idx, num in enumerate(input_list):
try:
if input_list[idx + 1] < num:
input_list[idx] = input_list[idx + 1]
input_list[idx + 1] = num
bubble_sort(input_list)
except IndexError:
pass
return input_list
if __name__ == '__main__':
my_list = [100, 39, 2, 12, 42, 12, 90]
bubble_sort(my_list)
print(my_list)