Невозможно gr asp, как присвоение True переменной работает в этом фрагменте кода - PullRequest
0 голосов
/ 18 июня 2020
myList = []
swapped = True
num = int(input("How many elements do you want to sort: "))

for i in range(num):
    val = float(input("Enter a list element: "))
    myList.append(val)
while swapped:
    swapped = False
    for i in range(len(myList) - 1):
        if myList[i] > myList[i + 1]:
            swapped = True
            myList[i], myList[i + 1] = myList[i + 1], myList[i]
print(myList)

Ответы [ 3 ]

0 голосов
/ 18 июня 2020

Значение True переменной swapped в этом коде должно сделать while l oop для следующей итерации.
Итак, если if myList[i] > myList[i + 1]: равно True, тогда swapped будет True и мужской, а l oop, чтобы продолжить работу.

0 голосов
/ 18 июня 2020

Это похоже на алгоритм пузырьковой сортировки

Условие l oop равно while swapped:. Таким образом, вам нужно заранее установить swapped = True, чтобы он выполнял первый l oop.

l oop начинается с установки swapped = False, затем для циклов более myList, чтобы проверить, нужно ли поменять местами какие-либо элементы. Затем он устанавливает swapped = False, чтобы время l oop знало, что ему нужен как минимум еще один проход по данным.

Алгоритм будет продолжать l oop над данными, пока не удастся сделать один полный l oop над myList без каких-либо двух элементов, требующих замены. Это означает, что данные были успешно отсортированы.

В качестве примечания, Барак Обама не советовал бы использовать пузырьковую сортировку как наиболее эффективный способ сортировки миллиона 32-битных целых чисел.

0 голосов
/ 18 июня 2020

Каждый раз, когда два элемента в массиве меняются местами, выполняется следующее:

if myList[i] > myList[i + 1]: # this checks if the elements are out of order
     swapped = True

если на любой данной итерации нет свопов, поменяемый флаг останется своим значением по умолчанию, false, что будет означать, что массив в порядке или сортировщик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...