Я пытаюсь закодировать алгоритм пузырьковой сортировки в Python, у которого есть флаг, который останавливает ненужные проходы. Результат, который я получаю:
[5, 9, 4, 15, 3, 8, 11]
[5, 4, 9, 15, 3, 8, 11]
[5, 4, 9, 3, 15, 8, 11]
[5, 4, 9, 3, 8, 15, 11]
[5, 4 , 9, 3, 8, 15, 11]
Правильный результат должен отображать каждый проход сортировки пузырьком, причем последний проход является отсортированным списком, но, как вы можете видеть выше, это не так.
numbers = [9, 5, 4, 15, 3, 8, 11]
numItems = len(numbers)
flag = True
i = 0
j = 0
while i < (numItems - 1) and (flag == True):
flag = False
for x in range(j, (numItems - i - 2)):
if numbers[j] > numbers[j + 1]:
temp = numbers[j]
numbers[j] = numbers[j+1]
numbers[j+1] = temp
print(numbers)
flag = True
j += 1
i += 1
print(numbers)