Почему не работает пузырьковая сортировка?
У меня есть пузырьковая сортировка. Скажите, пожалуйста, почему когда я сортирую 12 1 2 1 13, мне выдает 1, 2, 1, 12, 13, а не 1, 1, 2, 12, 13?
def bubble_sort(people):
n = len(people)
for i in range(n):
for j in range(n - i - 1):
already_sorted = True
if people[j] > people[j + 1]:
people[j], people[j + 1] = people[j + 1], people[j]
already_sorted = False
if already_sorted:
break
return people
number = int(input())
people = list(map(int, input().split()))
print(bubble_sort(people))
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
already_sorted = True нужно вынести из внутреннего цикла выше. А то сейчас получается, что если последние два элемента, проверяемые внутренним циклом, уже отсортированы, то сортировка (внешний цикл) заканчивается досрочно. Что и происходит из-за того, что у вас в конце стоят числа 1, 13.