ソートアルゴリズム比較
ソートアルゴリズム比較
ソートアルゴリズム比較
計算量一覧
| アルゴリズム | 最良 | 平均 | 最悪 | 安定 |
|---|---|---|---|---|
| バブルソート | Yes | |||
| マージソート | Yes | |||
| クイックソート | No |
クイックソートの実装例
TypeScript
function quickSort(arr: number[]): number[] {
if (arr.length <= 1) return arr;
const pivot = arr[Math.floor(arr.length / 2)];
const left = arr.filter((x) => x < pivot);
const middle = arr.filter((x) => x === pivot);
const right = arr.filter((x) => x > pivot);
return [...quickSort(left), ...middle, ...quickSort(right)];
}JavaScript
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[Math.floor(arr.length / 2)];
const left = arr.filter((x) => x < pivot);
const middle = arr.filter((x) => x === pivot);
const right = arr.filter((x) => x > pivot);
return [...quickSort(left), ...middle, ...quickSort(right)];
}マージソートの特徴
- 安定ソート: 同じ値の要素の順序が保持される
- 空間計算量: の追加メモリが必要
- 分割統治法: 再帰的に半分に分割して結合