JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで隣接する要素を比較してスワップする方法|バブルソートの実装例


隣接する要素同士を比較し、小さい方の値を入れ替える(スワップする)という考え方は、代表的なソートアルゴリズムであるバブルソート(Bubble Sort)の基本的な仕組みです。比較の結果、条件を満たしていれば2つの値を交換し、これを繰り返すことで配列全体が昇順に並び替えられていきます。

本記事では、JavaScriptで隣接要素の比較とスワップを行うバブルソートを実装する方法を、サンプルコード・実行手順・出力結果とあわせてわかりやすく解説します。

バブルソートのコード例

以下は、隣接する要素を比較しながら値を入れ替えることで、配列を昇順にソートするJavaScriptのコードです。

var numbers = [10, 100, 30, 40, 90, 4, 91, 56, 78];
function bubbleSorting(numbers) {
    for (var outer = 0; outer < numbers.length; outer++) {
        for (var inner = 0; inner < numbers.length; inner++) {
            if (numbers[outer] < numbers[inner]) {
                var temp = numbers[outer];
                numbers[outer] = numbers[inner];
                numbers[inner] = temp;
            }
        }
    }
    return numbers;
}
console.log(bubbleSorting(numbers));

コードのポイント

  • 外側のループ(outer): 配列の先頭から順に各要素を取り出します。
  • 内側のループ(inner): 取り出した要素と配列内の他の要素を1つずつ比較します。
  • 比較とスワップ: numbers[outer] の方が小さい場合、一時変数 temp を介して2つの値を入れ替えます。

プログラムの実行方法

上記のプログラムを実行するには、Node.js環境で次のコマンドを使用します。

node fileName.js

ここでは、ファイル名を「demo233.js」としています。実際に実行する際は次のように入力してください。

node demo233.js

出力結果

実行すると、コンソールには昇順に並び替えられた配列が出力されます。

PS C:\Users\Amit\JavaScript-code> node demo233.js
[
    4, 10, 30,  40, 56,
   78, 90, 91, 100
]

元の配列 [10, 100, 30, 40, 90, 4, 91, 56, 78] が、最小値の 4 から最大値の 100 まで正しく昇順に整列していることが確認できます。

補足:計算量について

この実装は二重ループ構造のため、計算量は O(n²) となります。そのため要素数が多い配列では処理時間が増大しやすい点に注意が必要です。大規模なデータを扱う場合は、クイックソートやマージソートなど、より効率的なアルゴリズムの活用を検討しましょう。


  1. JavaScriptの数値(Number)の基本と実践サンプルコード

    JavaScriptでは、整数も小数もすべて「Number」型として扱われます。この記事では、数値変数の定義方法と、それらを使った簡単な演算の例を、動作するHTMLサンプルコードとともに紹介します。サンプルコード以下は、JavaScriptで数値を扱う基本的な例です。整数(22、99)と小数(1.523)を変数に格納し、ボタンをクリックすると画面に表示する仕組みになっています。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport co

  2. JavaScriptで数値を丸める・切り捨てる方法|Math.round()とMath.trunc()の違いと使い方

    JavaScriptには、小数を整数へ変換するためのメソッドとして、Math.round() と Math.trunc() の2つが標準で用意されています。Math.round():小数点以下を四捨五入し、最も近い整数に丸めます。例えば「3.5」は「4」に、「3.4」は「3」になります。Math.trunc():小数点以下を単純に取り除き、整数部分だけを残します。「3.9」も「3.1」もどちらも「3」になります。それぞれの特徴を踏まえながら、実際のコード例を見ていきましょう。Math.round() と Math.trunc() の違いメソッド動作例(3.999)Math.round()四捨五