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