Сортировка списка
Сколько проходов нам нужно, чтобы отсортировать весь список?
Решаем эту проблему следующим образом: вводим другую переменную; ее задача - наблюдать, производился ли какой-либо обмен во время прохода или нет; если замены местами нет, то список уже отсортирован, и больше ничего делать не нужно. Мы создаем переменную с именем swapped
и присваиваем ей значение False
, чтобы указать, что замены местами нет. В противном случае ему будет присвоено True
.
my_list = [8, 10, 6, 2, 4] # list to sort
for i in range(len(my_list) - 1): # we need (5 - 1) comparisons
if my_list[i] > my_list[i + 1]: # compare adjacent elements
my_list[i], my_list[i + 1] = my_list[i + 1], my_list[i] # If we end up here, we have to swap the elements.
Вы должны уметь читать и понимать эту программу без каких-либо проблем:
my_list = [8, 10, 6, 2, 4] # list to sort
swapped = True # It's a little fake, we need it to enter the while loop.
while swapped:
swapped = False # no swaps so far
for i in range(len(my_list) - 1):
if my_list[i] > my_list[i + 1]:
swapped = True # a swap occurred!
my_list[i], my_list[i + 1] = my_list[i + 1], my_list[i]
print(my_list)
Запустите программу и протестируйте ее.