用途別推奨アルゴリズム選択フローチャート

データ特性に応じた最適なソートアルゴリズムの選び方

flowchart TD A[データサイズ?] --> B["`小 (n < 50) **挿入ソート**`"] A --> C[安定性必要?] C -->|Yes| D[メモリ制約?] C -->|No| E[データ型?] D -->|余裕あり| F["`**マージソート**`"] D -->|厳しい| G["`**ブロックソート**`"] E -->|整数| H["`**基数ソート**`"] E -->|汎用| I["`**クイックソート**`"] classDef decision fill:#264f78,stroke:#569cd6,stroke-width:2px,color:#fff classDef algorithm fill:#252526,stroke:#608b4e,stroke-width:2px,color:#7ac879 class A,C,D,E decision class B,F,G,H,I algorithm

特殊ケース

• 部分ソート済み → ティムソート

• 範囲限定整数 → カウンティングソート

• 最悪計算量保証 → ヒープソート

8 / 11