バブルソートはその名前が表すように、泡(Bubble)が水面に上がっていくように配列の要素が動いていきます。バブルソートは次のようなアルゴリズムで数列を昇順に並び変えます。
1 bubbleSort(A, N) // N 個の要素を含む 0-オリジンの配列 A 2 flag = 1 // 逆の隣接要素が存在する 3 while flag 4 flag = 0 5 for j が N-1 から 1 まで 6 if A[j] < A[j-1] 7 A[j] と A[j-1] を交換 8 flag = 1
数列 A を読み込み、バブルソートで昇順に並び変え出力するプログラムを作成してください。また、バブルソートで行われた要素の交換回数も報告してください。
入力の最初の行に、数列の長さを表す整数 N が与えられます。2行目に、N 個の整数が空白区切りで与えられます。
出力は 2 行からなります。1行目に整列された数列を 1 行に出力してください。数列の連続する要素は1つの空白で区切って出力してください。2 行目に交換回数を出力してください。
5 5 3 2 4 1
1 2 3 4 5 8
6 5 2 4 6 1 3
1 2 3 4 5 6 9