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