Keito

© 2024 Keito

技術ブログとポートフォリオ

バブルソートアルゴリズム

隣接する要素を比較して交換を繰り返すシンプルなソートアルゴリズムを学ぼう

O(n²)
時間計算量
O(1)
空間計算量
初級
難易度
ソート
カテゴリ

🔧 実行設定

配列:
[64, 34, 25, 12, 22, 11, 90]
要素数:
7
🫧

アルゴリズムを実行してください

左側の設定パネルから条件を設定し、「バブルソート実行」ボタンを押してください

💻 実装例(JavaScript)

function bubbleSort(arr) {
    const n = arr.length;
    const sortedArray = [...arr]; // 元の配列を変更しない
    
    for (let i = 0; i < n - 1; i++) {
        let hasSwapped = false;
        
        // 各パスで隣接要素を比較
        for (let j = 0; j < n - i - 1; j++) {
            if (sortedArray[j] > sortedArray[j + 1]) {
                // 交換
                [sortedArray[j], sortedArray[j + 1]] = 
                    [sortedArray[j + 1], sortedArray[j]];
                hasSwapped = true;
            }
        }
        
        // 交換がなければ既にソート済み
        if (!hasSwapped) {
            break;
        }
    }
    
    return sortedArray;
}

// 使用例
const unsortedArray = [64, 34, 25, 12, 22, 11, 90];
const sortedArray = bubbleSort(unsortedArray);
console.log(sortedArray); // [11, 12, 22, 25, 34, 64, 90]