【情報I】バブルソートが動かせない人へ。現役エンジニアが図でひとつずつ解説
こんにちは!オンライン家庭教師のこばやしです。普段はフリーランスのITエンジニアとして働きながら、中高生に「情報I」「理系数学」「英語」を教えています。
情報Iで登場する「バブルソート」。並べ替えのアルゴリズムですが、「手順が頭の中でこんがらがって、トレース問題で間違えてしまう」という方が本当に多いです。
でも、間違える原因ははっきりしています。頭の中だけで処理しようとしているからです。バブルソートは、一手ずつ図に書いて追いかければ、必ず正しく解けます! 今日はその追い方を、ていねいに見ていきましょう。
■ バブルソートは「隣同士を比べて交換」の繰り返し
まず、バブルソートがやっていることは、実はとてもシンプルです。隣り合う2つを比べて、順番が逆なら入れ替える。これを繰り返しているだけなんです。
「大きい数を右に寄せたい」なら、左から順に隣同士を比べて、左のほうが大きければ入れ替える。端まで行ったら、また最初から。やっていることはこれだけ、と分かると、少し気が楽になりませんか。
■ コツは「一手ずつ、図でトレースする」
ここが一番大事なポイントです。バブルソートは、絶対に頭の中だけでやってはいけません。
紙に数字を並べて書き、「今どことどこを比べている?」を矢印で示しながら、一回ずつ交換を追っていく。地味ですが、これが最も確実です。遠回りに見えて、実はこれが一番の近道なんです!
■ なぜ"バブル(泡)"と呼ぶのか
ところで、なぜ「バブル(泡)」ソートという名前なのでしょうか。
それは、大きい数が、まるで水中の泡がポコポコと浮かび上がるように、少しずつ端へ移動していくからです。この様子をイメージすると、アルゴリズムの動きが頭に残りやすくなります。名前の由来を知ると、ぐっと親しみがわいてきますよね。
■ 現場のプロも「一歩ずつ確かめる」
「そんな一手ずつなんて、プロはやらないのでは?」と思うかもしれません。でも実は逆で、私たちエンジニアこそ、複雑な処理は必ず一歩ずつ確かめます。
金融決済システムのような、絶対に間違えられない場面では、「たぶん合っているだろう」は通用しません。一つひとつ、確実に。この姿勢は、試験のトレース問題を解くときとまったく同じです。
■ 「一手ずつ分解すれば必ず追える」という姿勢
複雑に見える処理も、一手ずつ分解すれば必ず追いかけられる。この姿勢は、バブルソートに限らず、あらゆる難しい問題に立ち向かうときの武器になります。慌てず、一歩ずつ。それだけで、解ける問題はぐっと増えます。
私の授業では、必ず紙に配列を書いて、一回ずつ交換を追ってもらいます。手を動かすことで、「動かせない」が「動かせる」に変わっていきます。
「並べ替えの手順で、いつも途中で分からなくなる」
「トレース問題になると手が止まってしまう」
そんな方は、ぜひ一度体験授業にいらしてください。「動かせない」が「動かせる!」に変わる瞬間を、一緒に体験しましょう!
【プロフィール】
こばやし|納得感を大切にするフリーランスエンジニア
北海道大卒。約10年間にわたり金融決済システムなどの基幹開発に携わった後、フリーランスのエンジニア・IT講師として独立。企業の新人IT研修のメイン講師も務めるプロが、「仕組みから理解する」論理的な指導を行います。
この先生のおすすめコース
- 共通テストで「情報I」が必要な国公立大・難関私大志望の方
- 「プログラミング」や「データの分析」が苦手で、暗記に逃げている方
- 将来IT系に進みたい、または現役エンジニアから実学を学びたい方
このブログに関連するオンライン家庭教師はこちら
情報/プログラミングのおすすめの指導コース
- プログラミングに少しでも興味がある方
- プログラミングををしてみたいけど何から勉強すればいいかわからない方
- 独学でプログラミングを勉強したけど挫折してしまった方
- 3DCG作成に興味がある方
- 3DCGゲームを作ってみたい方
- 楽しく学びたい方
- 国家資格「ITパスポート」を取得したい
- 推薦入試や就職活動に活かしたい
- ITの知識を身につけたい
- ちゃんと理解して問題を解きたい生徒さん
- 数学苦手意識がある生徒さん
- 女性の先生から情報を教えてもらいたい生徒さん