ソートアルゴリズムビジュアライザー
リアルタイムのアニメーション棒グラフとステップ操作で、ソートアルゴリズムの動作を観察しましょう。
このツールについて
ソートアルゴリズムビジュアライザーは、さまざまなソートアルゴリズムが アニメーション棒グラフ上でステップごとに実行される様子を観察できる、 無料のインタラクティブなブラウザベースツールです。比較、スワップ、 分割がリアルタイムで行われるのを見ることで、抽象的なアルゴリズムの 概念が具体的かつ直感的に理解できます。
このツールは8つの重要なソートアルゴリズムをサポートしています: バブルソート、選択ソート、挿入ソート、マージソート、クイックソート、 ヒープソート、基数ソート、シェルソート。各アルゴリズムには最良、平均、 最悪の時間計算量と空間計算量の詳細情報が表示されます。また、各 アルゴリズムが安定(等しい要素の相対順序を保持する)かどうか、 インプレース(O(1)の追加メモリのみ必要)かどうかも確認できます。
比較モードでは、同じ入力データに対して2つのアルゴリズムを並べて実行 でき、クイックソートがバブルソートよりも一般的に優れている理由や、 マージソートが入力順序に関係なく一貫したO(n log n)のパフォーマンスを 維持する様子を簡単に確認できます。ランダム、ほぼソート済み、逆順、 少数のユニーク値の4つのデータプリセットから選択して、異なる入力分布が 各アルゴリズムのパフォーマンスにどう影響するかを観察できます。 アルゴリズムの計算量についてより深く学ぶには、 Big Oリファレンスツールをご覧ください。
ビジュアライザーは比較中のバーを黄色、スワップ中のバーを赤、 ピボット要素を紫、最終的なソート位置に到達した要素を緑で ハイライトします。リアルタイムカウンターが比較とスワップの総数を 追跡し、各アルゴリズムの効率を定量的に把握できます。ヒープソートで 使用されるツリーベースのデータ構造を学習中の方は、 二分木ビジュアライザーで 補完的な可視化をご利用いただけます。
すべての処理はrequestAnimationFrameを使用してブラウザ内で完全に行われ、 スムーズなアニメーションを実現します。データがサーバーに送信されることは ありません。配列、ツリー、ヒープとソートの関係をより広く見るには、 データ構造ビジュアライザーを ご覧ください。
使い方
- ドロップダウンメニューからソートアルゴリズムを選択します(例:バブルソート、クイックソート)。
- データプリセット(ランダム、ほぼソート済み、逆順、少数のユニーク値)を選択して初期配列を設定します。
- サイズスライダー(10–100要素)で棒グラフの要素数を調整します。
- Startをクリックしてアニメーションを開始します。黄色のバーは比較、赤のバーはスワップ、緑のバーは最終位置を示します。
- Pauseでアニメーションを一時停止し、Resumeで再開するか、Stepで1操作ずつ進めます。
- Speedスライダーでアニメーション速度をいつでも調整できます。
- Compareモードを有効にすると、同じデータに対して2つ目のアルゴリズムを並べて実行し、比較回数とスワップ回数の違いを観察できます。
人気のソートアルゴリズムトピック
よくある質問
データは安全ですか?
はい。ソートビジュアライザーはブラウザ内で完全に動作します。データはサーバーに一切送信されません。配列はJavaScriptのMath.random()を使用してローカルで生成され、すべてのソート操作はデバイス上で行われます。
どのソートアルゴリズムが最速ですか?
入力によります。汎用ソートでは、クイックソートとマージソートがO(n log n)の平均計算量で最も効率的です。マージソートはすべてのケースでO(n log n)を保証しますが、クイックソートは病理的な入力でO(n²)に劣化する可能性があります。ほぼソート済みのデータでは、O(n)の最良計算量を持つ挿入ソートが最速になることが多いです。基数ソートは値の範囲(k)がnに対して小さい場合、比較ベースのアルゴリズムを上回ることがあります。
安定ソートと不安定ソートの違いは何ですか?
安定ソートは等しい値を持つ要素の相対順序を保持します。例えば、2つの要素が同じキーを持つ場合、出力でも元の順序が維持されます。マージソート、バブルソート、挿入ソート、基数ソートは安定です。クイックソート、ヒープソート、選択ソート、シェルソートはデフォルトでは不安定です。
バーの色は何を意味しますか?
青いバーはデフォルトの未ソート状態です。黄色いバーは現在比較中です。赤いバーはスワップ中です。紫のバーはピボット要素(クイックソート)を示します。緑のバーは最終的なソート位置に到達しています。
モバイルデバイスで使用できますか?
はい。ビジュアライザーは完全にレスポンシブです。小さい画面ではバーの幅が自動的に調整されます。比較モードはモバイルでは見やすくするため縦に並びます。
比較モードはどのように動作しますか?
比較モードを有効にすると、両方のアルゴリズムが同じ初期配列を受け取り、同時に実行されます。それぞれの側で比較とスワップの回数を独立して追跡するため、同一の入力データに対する2つのアルゴリズムの効率を直接比較できます。
クイックソートのパフォーマンスが悪くなることがあるのはなぜですか?
クイックソートの最悪ケース(O(n²))は、ピボット選択が常に最小または最大の要素を選ぶ場合に発生します。例えば、最後の要素をピボットとして使用する場合、すでにソート済みや逆順の配列でこれが起こります。実際には、ランダムなピボット選択や三数の中央値戦略でこれを回避します。ビジュアライザーでは分かりやすさのため最後の要素をピボットとして使用しています。