この章の学習目標
読み終えたら、できること。
- 「まず流れを確かめる」の意味と理由を、具体例で説明できる
- 「値は表に残して追う」の意味と理由を、具体例で説明できる
- 「正しさの後に効率を比べる」の意味と理由を、具体例で説明できる
章内を一度に読まず、見出しごとに例を説明してから先へ進んでも大丈夫です。
この章の目次
WHY / なぜ学ぶ?
身近な「なぜ?」から。
同じ計算をするのに、なぜプログラムによって速さが違うのでしょう。その前に、そもそも手順が正しく終わるかを確かめる必要があります。「どう進むか」「値がどう変わるか」「何回調べるか」を分けると、長い処理も一つずつ読めます。
BIG PICTURE
この章の全体像をつかもう。
アルゴリズムは手順そのもの、フローチャートと擬似コードは手順を表す方法です。手順を表したら、具体的な入力で値を追うトレースで確認します。探索・整列はその応用で、さらにデータが増えたときの処理量を計算量として比べます。
アプリ教材の単元原図
まず、図で全体像をつかもう。
図の見出しと、下の本文の見出しを対応させて読みましょう。原図には発展事項も含まれます。この章の確認範囲は本文と代表3問です。
アプリ教材の制作原図を加工せず掲載しています。図の文字コードの固定バイト数などは例で、方式により異なります。本文の条件と併せて確認しましょう。本文は2026年10月に整理したWeb用解説です。
THREE KEYS
まず押さえるのは、3つ。
章の細かい用語は、この3つの考え方に結び付けて読み進めましょう。
まず流れを確かめる
順次・分岐・反復を見つけます。図の上下だけでなく矢印やインデントを読み、繰り返しがどこへ戻るかを先に決めます。
たとえば:条件が偽なら処理を実行せず終了するのか、別の分岐へ進むのかを確認します。
値は表に残して追う
頭の中だけでは更新前後を混同しがちです。代入のたびに値を記録し、条件判定に使うのがどの時点の値か確認します。
たとえば:n=80を2で整数除算していくと、80→40→20→10。10>10は偽です。
正しさの後に効率を比べる
速くても誤答する手順では役に立ちません。終了・出力を確かめてから、比較回数と使う記憶領域を比べます。
たとえば:二分探索は整列済みという条件が必要です。未整列なら半分を捨てる根拠がありません。
THINK WITH A DIAGRAM
図を読みながら、考え方を追う。
| 比べるもの | 例 | 読み取ること |
|---|---|---|
| 手順の表し方 | 図/擬似コード | 同じ処理を違う形式で表せる |
| 正しさ | 値の表・境界値テスト | 意図した結果で終了するか |
| 効率 | 比較回数・記憶量 | 入力が増えたときどう変わるか |
表が収まらない場合は横にスクロールできます。
3-3-1
アルゴリズムの定義
アルゴリズムは、問題を解くための明確な処理手順です。入力に対して、何をどの順番で行うかを定めます。「うまく並べる」のような曖昧な指示では実行できません。この教材では有限回で結果を得る手順を扱います。実行時間に加え、使う記憶領域も効率を比べる観点になります。
3-3-2
フローチャート
フローチャートは、処理の流れを記号と矢印で表します。長方形は処理、ひし形は条件判断です。配置の上下だけで進まず、矢印に沿って進みます。順次・分岐・反復を見つけ、繰り返しでは戻る先と終了条件、変数を更新する位置を確かめます。
3-3-3
擬似コード
擬似コードは、特定の実行言語に固定せず処理を記述する表記です。添字が0からか1からか、割り算や反復の範囲がどう定義されているかは問題文で確認します。Pythonのrangeの規則を、別の擬似言語にそのまま当てはめないようにしましょう。
3-3-4
変数と代入
変数への代入は、右側を計算して結果を左側に保存する操作です。x←x+1は等式ではなく更新です。上から順に命令を実行し、その時点の値を使います。2つの値を交換する処理では、元の値を一時変数に保存しないと、先の代入で失う場合があります。
3-3-5
条件分岐
条件分岐では、条件が真のときと偽のときで実行する処理が変わります。複数の条件は1つずつ判定して組み合わせます。80以上と80より大きいでは境界の80の扱いが違います。すべての場合でどれかの処理に進むか、何も行わない場合があるかも確認します。
3-3-6
繰り返し
反復は同じ処理を条件や回数に応じて繰り返すことです。n=100から、n>10の間nを整数除算で2分の1にすると、100→50→25→12→6で止まります。停止時に条件を満たす必要はなく、条件が偽になったから止まる点に注意します。変数の更新忘れは無限ループの原因になります。
3-3-7
配列
配列は複数の値を添字で指定して扱う仕組みです。0始まりでA=[8,3,5]なら、A[1]は値3です。添字1と値3を区別し、要素数3に対して最後の添字は2となります。繰り返しと組み合わせて全要素を調べるときは、配列の範囲を越えないようにします。
3-3-8
探索
線形探索は先頭から順に調べる方法です。二分探索は整列済みデータの探索範囲をほぼ半分ずつにします。二分探索では比較結果に応じて範囲を絞れる並び順が前提です。未整列の配列へ、そのまま適用できるわけではありません。見つからない場合の終了条件も必要です。
3-3-9
整列
整列は値を規則に従って並べ替えることです。バブルソートなら隣り合う値を比べ、逆順なら交換します。1回の走査で全部が整列するとは限りません。比較した回数と交換した回数は別なので、手順を追う表に分けて記録すると混乱しにくくなります。
3-3-10
計算量
計算量は、データ数が増えたとき処理量がどう増えるかを見る尺度です。線形探索は最悪でn件を調べ、二分探索はおおむねlog₂n回です。2の20乗は1,048,576なので、100万件の整列済み配列でも比較は約20回が目安になります。実機の秒数をそのまま表すものではありません。
重要語句を整理しよう。
| 語句 | 意味 | 混同しやすい点 |
|---|---|---|
| アルゴリズム | 目的の結果を得るための明確な処理手順。 | プログラムの見た目や使用言語そのものではない。 |
| 順次 | 処理を決まった順に実行する構造。 | 代入の順序を変えると結果が変わる場合がある。 |
| 分岐 | 条件の結果に応じて処理を選ぶ構造。 | 真・偽と、実行する処理を対応させる。 |
| 反復 | 条件や回数に従って処理を繰り返す構造。 | 条件判定の回数と処理回数を分ける。 |
| トレース | 処理を順に実行し、値の変化を追うこと。 | 更新前と更新後を表で分ける。 |
| 添字 | 配列の要素を指定する番号。 | 値や要素数と混同しない。 |
| 線形探索 | 要素を順に調べる探索。 | 整列済みでなくても利用できる。 |
| 二分探索 | 整列したデータの探索範囲を半分ずつにする方法。 | 並び順を前提に範囲を絞る。 |
| 計算量 | データ数に対する処理量などの増え方。 | そのまま実行秒数を表すわけではない。 |
表が収まらない場合は横にスクロールできます。
WORKED EXAMPLE
一緒に解く:手順と理由を確かめよう。
n=80から、n>10の間nを2で整数除算します。表示されるnと更新回数は?
- 初期値は80。80>10は真なので更新します。
- 40、20、10と、3回の更新で変わります。
- 10>10は偽なので、次の除算はしません。
- 表示は10、更新3回。最後の偽を含め条件判定は4回です。
| 判定に使うn | n>10 | 更新後 |
|---|---|---|
| 80 | 真 | 40 |
| 40 | 真 | 20 |
| 20 | 真 | 10 |
| 10 | 偽 | 更新せず終了 |
表が収まらない場合は横にスクロールできます。
表示は10です。条件を調べた回数と実行した回数を区別しましょう。
ここで間違えやすい。
TRY IT YOURSELF
次は、自分の言葉で。
n=40から、n>10の間nを2で整数除算すると最後は?
考え方と答えを確かめる
40→20→10で止まり、10です。最後の10>10は偽です。
理由まで言えたら、下の代表3問へ進みましょう。
CHECK YOUR UNDERSTANDING
代表3問で、確かめよう。
アプリ収録の問題から3問を選定。章内のすべての項目を出題するものではありません。解答・解説はこのページで確認できます。
解答・解説だけ読む
問1:D
アルゴリズムの評価においては、処理時間(実行速度)だけでなく、コンピュータのメモリなどの資源をどれだけ使用するか(記憶容量の節約)も重要な要素となります。CPUの性能だけでなくメモリやHDDの大きさを目的に合わせて決める必要性が述べられており、資源の有限性が示唆されています。有限の回数で終了すること、同じ入力なら同じ出力が得られること、各ステップに曖昧さがないことは、いずれもアルゴリズムの定義上の基本性質(有限性・確定性・一意性)にあたり、適切な記述です。なお乱数を用いる処理は、実行ごとに結果が変わる特別なケースとして扱われます。
問2:C
while 文は条件が真である間、処理を繰り返します。このプログラムの挙動を追うと、まず 100 // 2 = 50(10より大きい)、次に 50 // 2 = 25(10より大きい)、次に 25 // 2 = 12(10より大きい)、最後に 12 // 2 = 6 となります。ここで n が 6 になると、条件 n > 10 が偽になるため、ループが終了し、最終的な値 6 が表示されます。// は整数商を求める演算子です。
問3:B
二分探索は探索範囲を毎回半分に絞り込むアルゴリズムです。最大探索回数は 2^k ≥ n を満たす最小の整数 k で求められます。2^{10} = 1,024 ≈ 1,000 なので、2^{20} = (2^{10})^2 ≈ 1,000,000 となります。したがって、100万件のデータがあっても最大約20回の比較で目的のデータを見つけることができます。これは線形探索が最大100万回を要することと比較して極めて効率的です。
理解できたら、別の問題でも。
この章の考え方を、条件の違う問題でも確かめましょう。情報1アプリでは分野別の演習と間違えた問題の復習ができます。
無料でアプリを入手 iPhone・iPadはApp Store、AndroidはGoogle Playへ。PCではストアを選べます。運営者が開発するアプリです。各OSの機能と利用条件はストア掲載をご確認ください。説明できたら、この章は完了。
- 「まず流れを確かめる」の意味と理由を、具体例で説明できる
- 「値は表に残して追う」の意味と理由を、具体例で説明できる
- 「正しさの後に効率を比べる」の意味と理由を、具体例で説明できる
迷った項目は本文・図解・例題へ戻り、答えを見ずに説明し直してみましょう。
要点へ戻る ↑出典・教材について
本サイトの26章は、アプリの分類を用いた補助教材です。検定教科書や公式の章立てではありません。問題と図解は運営者のアプリ教材から選定し、問題ID・選択肢・正答を保持しています。共通テスト過去問の転載ではありません。