def bubble_sort(A, n):
for i in range(0,n-1):
for j in range(n-1,i,-1):
if A[j-1] > A[j]:
A[j-1], A[j] = A[j], A[j-1]
print(*A)
n = int(input())
A = list(map(int,input().split()))
bubble_sort(A,n)
0)バブルソートは「左の要素と比較し、左の方が大きければ交換する」のが基本。
1)バブルソートは基本的に一番奥からなので、
1番目のループは左の要素と考えるので、0〜全要素-2までになる。
41352からはじめるとして、たとえばiが0なら、n-2番目は「5」になる。
2)2番目のループは右の要素で、n-1つまりこの場合は2から初めて、0番目の4まで回す。
で、A[j-1]、最初はA[3]とA[4]の比較となる。A[3]が大きければスワップ。
次はA[2]とA[3]、次はA[1]とA[2]、。。。の繰り返しで、最後まで比較していく。
3)これが全部終わった時点でプリントし、次へ。
4)この時点で、一番左は確定しているため、要素が0数えの1からになる。で、jも
一番奥から2番目までをループで回すことになる。この繰り返し。
理屈はわかったけど、コードにできるまでが時間がかるなと思います。
ちょっと混乱するなぁ。。。