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