クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

データを並べかえる理由

このレッスンのあとで: データを並べかえて、その理由を説明できる。

50分のレッスンコマンドなし

どの店がいちばん売れたか

コンビニチェーンの本部で、エリアの担当になりました。毎朝、50店舗の売上の一覧が届きます。

一覧は店舗番号の順です。「昨日いちばん売れた店」を知るには、全部を見比べる必要があります。

売上の大きい順に並べれば、一行目を見るだけで分かります。

このレッスンのゴール

メモ

データを並べかえて、その理由を説明できる。

キーワード

ことばいみれい
ソートデータを決まった順に並べかえることです。
昇順小さい順です。
降順大きい順です。reverse=True
選択ソート残りの中の最小を、前に移すことをくり返す方法です。
入れかえ二つの要素の場所を交換することです。

学生が入力するセルは、このプレビューでは空白です。

並べると探せて、決められる

並べかえには、仕事の上で大きく三つの役目があります。

一つ目は、上位や下位がすぐ分かることです。二つ目は、二分探索が使えるようになることです。三つ目は、人が読んで比べやすくなることです。

Pythonでは sorted() か .sort() で並べかえます。

やってみよう: 売上を並べる

コード: python
# 昨日の店舗別の売上(万円)です。店舗番号の順に並んでいます。
sales = [48, 63, 35, 71, 52]

ranked = sorted(sales, reverse=True)   # 大きい順の新しいリストを作る
print("大きい順:", ranked)
print("1位の売上:", ranked[0], "万円")
print("元のリスト:", sales)            # sorted は元のリストを変えない

sales.sort()                           # sort は元のリストそのものを並べかえる
print("sort のあと:", sales)

# reverse=True を消して、もう一度実行しましょう。並び方はどう変わりますか。

よくある間違い

注意

「sorted() を使えば、元のリストも並ぶ」と思う人がいます。sorted() は、並んだ新しいリストを返すだけです。元のリストそのものを並べたいときは、.sort() を使います。

選択ソートは最小を前に運ぶ

sorted() の中では、決まった手順が動いています。いちばん分かりやすい手順が選択ソートです。

まず、全体からいちばん小さい値を探し、先頭と入れかえます。次に、残りから最小を探して、2番目と入れかえます。

これを最後までくり返すと、小さい順に並びます。

やってみよう: 請求書を並べる

コード: python
# 経理に届いた請求書の金額(円)です。
bills = [45000, 12000, 78000, 30000]

for i in range(len(bills)):
    smallest = i
    # まだ並んでいない部分から、いちばん小さい金額を探します。
    for j in range(i + 1, len(bills)):
        if bills[j] < bills[smallest]:
            smallest = j
    # 見つけた金額を、i の場所と入れかえます。
    temp = bills[i]
    bills[i] = bills[smallest]
    bills[smallest] = temp
    print(i + 1, "回目のあと:", bills)

# bills に 5000 を足して、もう一度実行しましょう。何回目まで続きますか。

例: 選択ソートを表で追う

回目残りの中の最小入れかえそのあとのリスト
はじめ45000, 12000, 78000, 30000
11200045000と1200012000, 45000, 78000, 30000
23000045000と3000012000, 30000, 78000, 45000
34500078000と4500012000, 30000, 45000, 78000
478000なし12000, 30000, 45000, 78000

学生が入力するセルは、このプレビューでは空白です。

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。