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