Решение: Подсчёт обменов в массиве
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 10. Значения элементов равны 1, 6, 7, 3, 10, 4, 8, 2, 0, 5, 9 соответственно, то есть $A[0] = 1$, $A[1] = 6$ и так далее. Определите значение переменной $s$ после выполнения фрагмента программы.
1A = [1, 6, 7, 3, 10, 4, 8, 2, 0, 5, 9] 2s = 0 3for j in range(10): 4 if A[j] > A[j + 1]: 5 s = s + 1 6 t = A[j] 7 A[j] = A[j + 1] 8 A[j + 1] = t
Решение по шагам
5 шаговПеременная $s$ изначально равна 0. На каждом шаге цикла сравниваются соседние элементы $A[j]$ и $A[j+1]$.
Если $A[j] > A[j+1]$, выполняется обмен элементов, а значение $s$ увеличивается на 1.
Условие выполняется при $j = 2$: меняются местами 7 и 3.
Затем обмены выполняются при $j = 4, 5, 6, 7, 8, 9$: каждый раз число 10 перемещается вправо через меньшее число.
Всего выполнено 7 обменов, поэтому значение переменной $s$ равно 7.
$$s = 7$$Где здесь ошибаются
Считать только сравнения, при которых элементы не меняются местами.
Забыть, что после каждого обмена изменяется массив и следующие сравнения выполняются уже с обновлёнными значениями.