並べ替えを理解しよう
値を比べて交換し、順番を整える手順を追います。
必須
これまでの内容から、3問を復習しよう
前回までの内容から、毎回ランダムに3問が選ばれます。復習用ファイルは一つだけ作り、問題ごとに中身を書き換えます。
lesson08_review.pyレッスン番号と使う場面が分かる名前にして、あとで探しやすくします。
- VS Code上部の「ファイル」をクリック
- 「新しいテキスト ファイル」をクリック
- Ctrl+S(Macは⌘+S)を押す
lesson08_review.pyと入力して「保存」を押す
ここを確認:画面上のタブ、または左側のファイル一覧にlesson08_review.pyと表示されたら準備完了です。
条件分岐
a=8
if a>5:
print("大")結果は?
繰返し
total=0
for i in range(1,4):
total=total+i
print(total)合計は?
リスト検索
A=[4,9,2]
print(9 in A)結果は?
実際に自分のパソコンで行ってから、チェックを入れてください。
比較と交換を繰り返す並べ替えを追える。
- ✓並べ替えの必要性を説明できる
- ✓隣同士を交換できる
- ✓変化を表で追える
なぜ並べ替えるの?
- 並べ替えの便利さを理解する
- 隣同士を比較して交換する
- 繰返しで順番を整える
- 途中のリストを表で追う
- 必須問題で確かめる
点数を小さい順に並べると、順位や中央値を調べやすくなります。コンピューターは「比較する」「必要なら交換する」を何度も繰り返して整えます。
前後のつながり:第7回の「一つずつ見る」を使って隣同士を比べます。第9回では、この処理を条件が正しい間繰り返す方法へ進みます。
2つの値を交換しよう
lesson08_step02.pyレッスン番号と使う場面が分かる名前にして、あとで探しやすくします。
- VS Code上部の「ファイル」をクリック
- 「新しいテキスト ファイル」をクリック
- Ctrl+S(Macは⌘+S)を押す
lesson08_step02.pyと入力して「保存」を押す
ここを確認:画面上のタブ、または左側のファイル一覧にlesson08_step02.pyと表示されたら準備完了です。
lesson08_step02.pyへ見本コードを一文字ずつ入力する- 実行前に結果を予想する
- 保存してVS Code右上の「▶」を押す
- 下部ターミナルの結果を教材と比べる
A = [8, 3]
if A[0] > A[1]:
temp = A[0]
A[0] = A[1]
A[1] = temp
print(A)最後のリストは?
先に自分のパソコンで実行しましょう。画面に出た結果を見てから、下のボタンを押します。
左から1周だけ動かそう
今回は完全な並べ替えではなく、左から右へ1周する動きだけを確かめます。大きい値が少しずつ右へ移る様子に注目します。
A = [5, 2, 4]
for i in range(len(A) - 1):
if A[i] > A[i + 1]:
A[i], A[i + 1] = A[i + 1], A[i]
print(A)
print("1周後", A)ターミナルには、比較するたびのリストと、1周後のリストが表示されます。
1周後の結果は?
先に自分のパソコンで実行しましょう。画面に出た結果を見てから、下のボタンを押します。
ここまで分かったか確認しよう
lesson08_step04.pyこの回の必須問題で使うファイルです。問題ごとに中身を書き換えて使います。
- VS Code上部の「ファイル」をクリック
- 「新しいテキスト ファイル」をクリック
- Ctrl+S(Macは⌘+S)を押す
lesson08_step04.pyと入力して「保存」を押す
ここを確認:画面上のタブ、または左側のファイル一覧にlesson08_step04.pyと表示されたら準備完了です。
lesson08_step04.pyを作る- 入力・保存・実行する
- ヒントと答えで確認し、同じファイルを書き換える
2つの数を交換
[9, 4]を小さい順にします。
1周目を紙で追う
[7, 3, 5]を左から隣同士で比較した1周目を書きます。この問題だけは紙で答えます。
1周分を実行する
[6, 2, 5, 1]を左から1周し、比較ごとのリストを表示します。
実際に自分のパソコンで行ってから、チェックを入れてください。
共通テスト型の問題を3問解こう
Pythonで動かした経験を思い出し、コードを上から読みます。まず自分で考え、困ったときだけボタンを開きましょう。
1周目の並びを追う
A = [5, 2, 4]
左から隣同士を比べ、大きい方を右へ交換する1周した後のAは?
交換回数を数える
A = [3, 1, 2]
左から隣同士を比べ、大きい方を右へ交換する1周目の交換は何回?
昇順の完成形を選ぶ
A = [7, 3, 5, 1]
小さい順に並べ替える並べ替え後のAは?
できるだけ解いてみよう
- 1. [6,2]を交換する
- 2. [4,1,3]の1周目
- 3. 交換が必要ない組
- 4. 大きい順に交換する条件
- 5. tempを使う交換
- 6. Pythonの同時交換
- 7. sortで確認する
- 8. 並べ替え前後の最大値
- 9. 中央値を求める
- 10. 4個のバブルソートを紙で追う