Условие:
Какая из приведенных функций выполнит сортировку пузырьком по убыванию?
1)
def F2(a):
⠀⠀n = len(a)
⠀⠀for i in range(n):
⠀⠀⠀⠀minidx = i
⠀⠀⠀⠀for j in range(i + 1, len(a)):
⠀⠀⠀⠀⠀⠀if a[j] < a[minidx]:
⠀⠀⠀⠀⠀⠀⠀⠀minidx = j
⠀⠀return a
3)
def F1(a):
⠀⠀n = len(a)
⠀⠀for i in range(n):
⠀⠀⠀for j in range(0, n – i – 1):
⠀⠀⠀⠀⠀⠀if a[j] > a[j + 1]:
⠀⠀⠀⠀⠀⠀⠀⠀a[j], a[j + 1] = a[j + 1], a[j]
⠀⠀return a
2)
def F1(a):
⠀⠀n = len(a)
⠀⠀for i in range(n):
⠀⠀⠀for j in range(0, n – i – 1):
⠀⠀⠀⠀⠀⠀if a[j] < a[j + 1]:
⠀⠀⠀⠀⠀⠀⠀⠀a[j], a[j + 1] = a[j + 1], a[j]
⠀⠀return a
4)
def F2(a):
⠀⠀n = len(a)
⠀⠀for i in range(n):
⠀⠀⠀⠀minidx = i
⠀⠀⠀⠀for j in range(i + 1, len(a)):
⠀⠀⠀⠀⠀⠀if a[j] > a[minidx]:
⠀⠀⠀⠀⠀⠀⠀⠀minidx = j
⠀⠀return a
Решение:
Мы должны найти функцию, которая реализует сортировку пузырьком по убыванию, то есть функция, которая сравнивает соседние элементы и меняет их местами, если порядок нарушен (при убывании – если предыдущий элемент меньше следующего). Рассмотрим по порядку код каждой функции: 1) Функция F2: def F2(a): n = len(a) for i in range(n): minidx = i for j in range(i + 1, len(a)): if a[j] a[minidx]: minidx = j return a Здесь используется поиск минимума (типичный для сортировки выбором), а не сравнение соседних элементов с последующим обменом. Поэтому эта ф...
![Какая из приведенных функций выполнит сортировку пузырьком по убыванию? 1) def F2(a): ⠀⠀n = len(a) ⠀⠀for i in range(n): ⠀⠀⠀⠀minidx = i ⠀⠀⠀⠀for j in range(i + 1, len(a)): ⠀⠀⠀⠀⠀⠀if a[j] < a[minidx]: ⠀⠀⠀⠀⠀⠀⠀⠀minidx = j ⠀⠀return a 3) def F1(a): ⠀⠀n = len(a)](/public/images/library/external/library-detail-hero-book.png)