

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
バブルソートとマージソートの基本を同時比較
バブルソートは、はじめの配列を順番に見て、隣り合う要素を比較して必要なら入れ替えを繰り返し、次第に最大の要素が右端へと移動していく様子を想像すると理解しやすいです。たとえば、10個の数が入った列を考えると、最初のパスでは最も大きい数が右端に落ち着き、次のパスでは左側の未整列部分の中で同じ動作が繰り返され、再び最大の数が右端に移動します。これを繰り返すと、全体が整列されます。
この動きは、隣同士の比較と入れ替えのみで進むため、アルゴリズムの内部はとても単純です。しかし、全体の計算量は暗黙のうちに膨らみ、最悪の場合は O(n^2) になります。
とはいえ、実装は非常にシンプルで、データの量が少ない場面や、学習の入り口として「比べる練習」をしたいときには向いています。
また、安定性がある点も特徴です。つまり、同じ値を持つ要素の相対的な順番が、並び替え後も保たれることを意味します。これが分かれば、安定なソートが必要なケース(同じ値に別の意味が含まれる場合、例えば人数リストと同姓同名の出現順を守るとき)で有利になります。
ただし、メモリは追加で使わずに済むため、メモリ効率が高いという点も長所です。
このような特性を押さえておくと、身近な小さなデータセットの処理において「どうしてこの順番になるのか」を実感しやすくなります。
実際の動きを図解で見る
ここでは、具体的な小さな例を使って、バブルソートとマージソートの“動き”を実感してみましょう。最初の配列を [4, 2, 7, 1, 3] とします。バブルソートでは、左から隣接する要素を比較して入れ替えを繰り返します。最初のパスでは [2, 4, 1, 3, 7]、次のパスでは [2, 1, 3, 4, 7]、さらに [1, 2, 3, 4, 7] と進みます。最終的に完全に整列されます。この過程では、各パスにおける最大の要素が右端へ固定されるという性質を目に見える形で観察できます。
一方、マージソートはデータを半分に分けて、それぞれの部分を再帰的に整列させ、最後に二つの整列済み部分を結合します。結合は新しい配列を作って要素を一つずつ比べて順番に置く作業です。これを繰り返すと、分割の深さは log2(n) 程度で、総合計は n log n の時間になります。
この違いを理解することは、アルゴリズムの選択を考えるときの第一歩です。特にデータ量が大きくなると、実行時間の差が顕著になります。
僕と友だちのナツが、放課後の図書室でアルゴリズムの話題を取り上げた。僕が『安定性って、同じ値が並んだときの順序が崩れないことだよね?』と尋ねると、ナツは『そう。例えば成績表のように、同じ点数の生徒が複数いても、元の出現順序を守って並べてほしい場面がある。それが安定性の力だ』と答えた。二人は紙に例を描きながら、バブルソートがどうして安定性を保つのか、マージソートも適切な実装なら安定になる理由を、日常の話題にからめて解説した。話は尽きず、アルゴリズムとデータの結びつきの奥深さを感じた。