我最近开始学习python。我已经为冒泡排序编写了一个函数。很好用。当我使用两个最小值时只有一个问题。第二个排序不正确
def bubble_sort(arr):
flag = True
for i in range(len(arr) - 1):
if flag == False:
return arr
flag = False
for j in range(i, len(arr) - 1):
if arr[j] > arr[j + 1]:
print(arr[j], arr[j + 1])
temp = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = temp
flag = True
return arr
print(bubble_sort([1, 5, 3, 2, 5, 1, 6])) //[1, 2, 1, 3, 5, 5, 6]
我希望两个1
在开头,但是第二个在第三个位置
应该而不是增加每个循环的开始索引,而是减少结束索引,如:
每次迭代都将光标从左向右移动。这意味着如果光标找到最大值,它会将该值移动到列表的右端。但对于最小值,同样的情况并不成立。如果光标找到最小值,它将只向左移动一个位置。这就是为什么每次迭代都应该从列表的开头开始
相关问题 更多 >
编程相关推荐