gpt4 book ai didi

python - 为什么使用冒泡排序时数组的最小元素没有排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:10:35 24 4
gpt4 key购买 nike

我最近开始使用 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,但第二个在第三个位置。

最佳答案

您应该在每个循环中递增起始索引,而递减结束索引,例如:

def bubble_sort(arr):
flag = True
for i in range(1, len(arr)):
if not flag:
return arr
flag = False
for j in <b>range(len(arr) - i)</b>:
if arr[j] > arr[j+1]:
arr[j+1], arr[j] = arr[j], arr[j+1]
flag = True
return arr

每次迭代,您都将光标从左向右移动。这意味着如果游标找到最大值,它将将该值移动到列表的右端。但同样也适用于最小值。如果光标找到最小值,它只会向左移动一个 位置。这就是为什么每次迭代都应该从列表的开头开始。

关于python - 为什么使用冒泡排序时数组的最小元素没有排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57340079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com