演習課題「挿入ソートの部分的な実装」
整数nと、要素数nの整数列aが与えられるので、挿入ソートでaを小さい順にソートするプログラムを作成してください。
アルゴリズムが正しく実装されていることを確認するために、各i(i=1,2,...,n-1) についてi回目の処理が終わった時点での配列を出力してください。
右側のコードエリアには、入力を受け取り、挿入ソートのループ処理と配列の出力をおこなうコードが用意されています。コードを書き加え、問題を解くコードを完成させてください。
期待する出力値
1 4 3 5 2
1 3 4 5 2
1 3 4 5 2
1 2 3 4 5
演習課題「挿入ソート・コード修正」
整数nと、要素数nの整数列aが与えられるので、挿入ソートでaを小さい順にソートするプログラムを作成してください。
アルゴリズムが正しく実装されていることを確認するために、各i(i=1,2,...,n-1)についてi回目の処理が終わった時点での配列を出力してください。
右側のコードエリアに用意されているコードには誤りがあります。訂正し、問題を解くコードを完成させてください。
期待する出力値
1 4 3 5 2
1 3 4 5 2
1 3 4 5 2
1 2 3 4 5
演習課題「挿入ソートの実装」
整数nと、要素数nの整数列aが与えられるので、挿入ソートでaを小さい順にソートするプログラムを作成してください。
アルゴリズムが正しく実装されていることを確認するために、各i(i=1,2,...,n-1)についてi回目の処理が終わった時点での配列を出力してください。
右側のコードエリアには、入力を受け取るコードが用意されています。コメントを参考にコードを書き加え、問題を解くコードを完成させてください。
期待する出力値
1 4 3 5 2
1 3 4 5 2
1 3 4 5 2
1 2 3 4 5
※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#03:挿入ソート
実際に挿入ソートを実装してレベルアップ問題集の問題を解いてみます。
def print_array(a):
print(*a)
def insertion_sort(a, n):
for i in range(1, n):
# 先に a[i] を保存しておき、x とする
x = a[i]
# 挿入する位置を探すための変数 j を用意する
j = i - 1
# j が 0 以上かつ a[j] が x より大きい間
while j >= 0 and x < a[j]:
# a[j] を 1 つ右にずらす
a[j+1] = a[j]
# j を 1 減らす
j -= 1
# a[j+1] に x を挿入する
a[j+1] = x
print_array(a)
n = int(input())
a = [int(x) for x in input().split()]
insertion_sort(a, n)
4
8 1 3 2
def print_array(a):print(*a)
コードの実行