Шешімі: Подсчёт обменов в массиве
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 10. Значения элементов равны $9, 5, 10, 3, 6, 7, 2, 1, 8, 0, 4$ соответственно, то есть $A[0] = 9$, $A[1] = 5$ и т. д. Определите значение переменной $s$ после выполнения фрагмента программы: $s := 0$; для $j$ от 0 до 9: если $A[j] < A[j+1]$, то $s := s + 1$, после чего значения $A[j]$ и $A[j+1]$ меняются местами.
Шешімін қадамдап көрсету
6 қадамНачальный массив: $[9, 5, 10, 3, 6, 7, 2, 1, 8, 0, 4]$, $s=0$.
При $j=0$ условие $9<5$ ложно. При $j=1$ условие $5<10$ истинно: выполняется обмен, $s=1$.
После обмена при $j=1$ массив начинается так: $[9, 10, 5, 3, 6, 7, 2, 1, 8, 0, 4]$. При $j=3$ выполняется обмен $3$ и $6$, поэтому $s=2$.
При $j=4$ выполняется обмен $3$ и $7$, поэтому $s=3$.
При $j=7$ выполняется обмен $1$ и $8$, поэтому $s=4$.
При $j=9$ выполняется обмен $0$ и $4$, поэтому $s=5$. Остальные сравнения не приводят к обмену.
Где здесь ошибаются
Сравнивают элементы исходного массива, не учитывая выполненные обмены.
Увеличивают $s$ при каждом сравнении, а не только при истинном условии.
Забывают, что цикл выполняется для $j$ от 0 до 9 включительно.