Почему не работает пузырьковая сортировка?

У меня есть пузырьковая сортировка. Скажите, пожалуйста, почему когда я сортирую 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.

→ Ссылка