クイックソートアルゴリズム
分割統治法を使用した高速で実用的なソートアルゴリズムを学ぼう
O(n log n)
時間計算量(平均)
O(log n)
空間計算量
中級
難易度
ソート
カテゴリ
🔧 実行設定
配列:
[3, 6, 8, 10, 1, 2, 1]
要素数:
7
ピボット戦略:
末尾要素
ピボット選択戦略
⚡
アルゴリズムを実行してください
左側の設定パネルから条件を設定し、「クイックソート実行」ボタンを押してください
💻 実装例(JavaScript)
function quickSort(arr, low = 0, high = arr.length - 1) {
if (low < high) {
// パーティション操作:ピボットの正しい位置を見つける
const pivotIndex = partition(arr, low, high);
// ピボットの左側を再帰的にソート
quickSort(arr, low, pivotIndex - 1);
// ピボットの右側を再帰的にソート
quickSort(arr, pivotIndex + 1, high);
}
return arr;
}
function partition(arr, low, high) {
const pivot = arr[high]; // 末尾をピボットに選択
let i = low - 1; // 小さい要素の境界
for (let j = low; j < high; j++) {
// 現在の要素がピボット以下の場合
if (arr[j] <= pivot) {
i++;
[arr[i], arr[j]] = [arr[j], arr[i]]; // 交換
}
}
// ピボットを正しい位置に配置
[arr[i + 1], arr[high]] = [arr[high], arr[i + 1]];
return i + 1; // ピボットの位置を返す
}
// 使用例
const unsortedArray = [3, 6, 8, 10, 1, 2, 1];
const sortedArray = quickSort([...unsortedArray]);
console.log(sortedArray); // [1, 1, 2, 3, 6, 8, 10]