演習課題「選択ソートの部分的な実装」
整数nと、要素数nの整数列aが与えられるので、選択ソートでaを小さい順にソートするプログラムを作成してください。
アルゴリズムが正しく実装されていることを確認するために、各i(i=1,2,...,n-1) についてi回目の処理が終わった時点での配列を出力してください。
右側のコードエリアには、入力を受け取り、選択ソートのループ処理と配列の出力をおこなうコードが用意されています。コードを書き加え、問題を解くコードを完成させてください。
期待する出力値
1 4 3 5 2
1 2 3 5 4
1 2 3 5 4
1 2 3 4 5
演習課題「選択ソート・コードの修正」
整数nと、要素数nの整数列aが与えられるので、選択ソートでaを小さい順にソートするプログラムを作成してください。
アルゴリズムが正しく実装されていることを確認するために、各i(i=1,2,...,n-1) についてi回目の処理が終わった時点での配列を出力してください。
右側のコードエリアに用意されているコードには誤りがあります。訂正し、問題を解くコードを完成させてください。
期待する出力値
1 4 3 5 2
1 2 3 5 4
1 2 3 5 4
1 2 3 4 5
演習課題「選択ソートの実装」
整数nと、要素数nの整数列aが与えられるので、選択ソートでaを小さい順にソートするプログラムを作成してください。
アルゴリズムが正しく実装されていることを確認するために、各i(i=1,2,...,n-1) についてi回目の処理が終わった時点での配列を出力してください。
右側のコードエリアには、入力を受け取るコードが用意されています。コメントを参考にコードを書き加え、問題を解くコードを完成させてください。
期待する出力値
1 4 3 5 2
1 2 3 5 4
1 2 3 5 4
1 2 3 4 5
#04:選択ソート
選択ソートについて学び、実際に選択ソートを実装してレベルアップ問題集の問題を解いてみます。
選択ソートの交換回数は、最大でn-1回です。
def print_array(a):
print(*a)
def selection_sort(a, n):
for i in range(n-1):
# 変数 min_index を用意する
min_index = i
# j が i+1 から n-1 までのループを用意する
for j in range(i+1, n):
# A_j < A_{min_index} なら
if a[j] < a[min_index]:
# min_index を j に更新する
min_index = j
# A_i と A_{min_index} を交換する
a[i], a[min_index] = a[min_index], a[i]
print_array(a)
n = int(input())
a = [int(x) for x in input().split()]
selection_sort(a, n)
4
8 1 3 2
def print_array(a):print(*a)