IT基礎
アルゴリズム
初級読み方:あるごりずむ|英語:Algorithm
問題を解くための手順で、料理のレシピのようにステップを順番に実行するよ。
やさしい説明
アルゴリズムとは、問題を解くための「手順」や「やり方」のことです。料理のレシピのように、決まった手順に従えば誰でも同じ結果が得られます。
例えば「50人の中から一番背が高い人を見つける」とき、全員を1人ずつ比較していく方法がアルゴリズムです。
同じ問題でも効率の良いアルゴリズムと悪いアルゴリズムがあります。データが増えたときに速度が落ちないアルゴリズムを選ぶことが大切です。
具体例・使い方
// 配列から最大値を見つけるアルゴリズム
function findMax(arr) {
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) max = arr[i];
}
return max;
}
findMax([3, 7, 1, 9, 4]); // 9 代表的なアルゴリズムの種類
- 線形探索 — 先頭から順番に1件ずつ調べる。シンプルだがデータ量が増えると遅くなる
- 二分探索 — ソート済みデータを半分ずつ絞り込んで探す。線形探索より大幅に高速
- バブルソート — 隣り合う要素を比較・交換して並び替える。わかりやすいが大量データには不向き
- クイックソート — 基準値を決めて分割しながら並び替える。実用的で高速なソートアルゴリズム
- 再帰 — 関数が自分自身を呼び出す手法。ツリー構造の探索や分割統治に使われる
アルゴリズムの効率(計算量)
アルゴリズムの効率は「データ数 n が増えたときに処理時間がどう変わるか」で評価します。これを O記法(ビッグオー記法) で表します。
O(1)— データ数によらず一定時間。配列のインデックスアクセスなどO(n)— データ数に比例して増える。線形探索などO(n²)— データ数の2乗で増える。二重ループやバブルソートなど。データが増えると急激に遅くなるO(log n)— データが倍になっても処理が1ステップ増えるだけ。二分探索など。非常に効率的
初心者のうちは「二重ループは大量データに注意」と覚えておくだけで十分です。計算量の詳細はデータ構造・アルゴリズムの専門書で深掘りできます。
いつ意識する?
検索・ソート・経路探索など、データを処理する機能を作るときに意識します。小規模なWebサイトでは極端に気にする必要はありませんが、以下の場面では特に重要です。
- 大量データ(数万件以上)を扱う処理
- 繰り返し実行されるバッチ処理
- リアルタイム性が求められるゲームやチャット
間違いやすいポイント
❌ 効率を考えずに二重ループを使う
データが10件なら問題なくても、10万件になると O(n²) のアルゴリズムは100億回の処理になります。データ量が増えたときの挙動を意識しましょう。
関連用語
📖 関連レッスン
レッスンを見る →