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