1
Я пытаюсь создать функцию, сортирующую список, используя сортировку пузырьков, и возвращает кортеж с количеством свопов и сравнений. Такие, что:Python Bubble Сортировать список с подсчетом подкачки
print(perform_bubble_sort([3, 5, 7]))
>>> (3, 0)
.
Я попытался использовать следующий код, но по какой-то причине он не возвращает правильное количество сравнений.
def perform_bubble_sort(blist):
cmpcount, swapcount = 0, 0
while True:
swapped = False
for i in range(1, len(blist)):
cmpcount += 1
if blist[i-1] > blist[i]:
swapcount += 1
blist[i-1], blist[i] = blist[i], blist[i-1]
swapped = True
if not swapped:
break
return cmpcount, swapcount
Это работает! Как я могу заставить эту функцию прекратить выполнение, когда отсортированы все элементы? – Newbie
@Newbie Вы можете использовать 'swapped', как это. Я удаляю его, потому что обычно люди не делают этого в сортировке пузыря. – laike9m