# 情報I / 共通テスト

バブルソートを共通テストの表記とPythonで読む

隣り合う2つを比べ、順番が逆なら入れ替えます。1回通すごとに、いちばん大きい値が後ろへ移っていきます。

01

表記とPythonで読む

5つの数を小さい順に並べ替えます。外側の繰り返し1回で、残りの中でいちばん大きい値が右端に決まります。

共通テスト用プログラム表記

Data = [5, 3, 8, 1, 4]kazu = 要素数(Data)i を 0 から kazu - 2 まで 1 ずつ増やしながら繰り返す:|j を 0 から kazu - 2 - i まで 1 ずつ増やしながら繰り返す:||もし Data[j] > Data[j + 1] ならば:|||tmp = Data[j]|||Data[j] = Data[j + 1]⎿⎿⎿Data[j + 1] = tmpi を 0 から kazu - 1 まで 1 ずつ増やしながら繰り返す:⎿表示する(Data[i])

Python書き換えて実行できます

▶ 実行 を押すと、ここに結果が出ます

共通テストの表記どおりなら、次のように表示されます。

1
3
4
5
8

02

外側の繰り返しごとの配列

内側の繰り返しの終わりが kazu - 2 - i になっているのは、外側を1回通すごとに右端から1つずつ並べ終わるからです。並べ終わった部分は、もう比べる必要がありません。4回目は入れ替えが起きませんが、このプログラムは決まった回数だけ繰り返します。

i終わったときのData入れ替えた回数
0[3, 5, 1, 4, 8]3
1[3, 1, 4, 5, 8]2
2[1, 3, 4, 5, 8]1
3[1, 3, 4, 5, 8]0

03

練習問題

外側の繰り返しの1回目(i = 0)が終わったとき、Data はどうなっていますか。

  1. [3, 5, 1, 4, 8]
  2. [1, 3, 4, 5, 8]
  3. [3, 1, 4, 5, 8]
  4. [5, 3, 8, 1, 4]
答えと解説を見る

答え 11回目は j = 0 から 3 まで隣どうしを比べます。5と3を入れ替え、5と8はそのまま、8と1を入れ替え、8と4を入れ替えるので [3, 5, 1, 4, 8] になります。いちばん大きい8が右端に移ったところで1回目が終わります。

04

書き換えて試す

上のPythonのコードを書き換えて、もう一度実行してみましょう。

  • 条件の > を < に変えて、大きい順に並ぶことを確かめる
  • 外側の繰り返しの中に print(Data) を足して、上の表と同じになるかを見る
  • 入れ替えが1回も起きなかったら、そこで繰り返しを終えるように変える

05

ほかの練習

表記の出典: 大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」。問題とデータはLaibraのオリジナルです。

# LET'S TRY

読めたら、次は書いてみよう。

無料でPythonを始める

変数・条件分岐・繰り返しから、ブラウザで順番に練習できます。

無料で利用できる範囲・有料プランは料金案内をご確認ください。