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