ホームページ ウェブフロントエンド jsチュートリアル JavaScript バブルソートアルゴリズム

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

Dec 19, 2016 pm 02:10 PM
バブルソート

バブル ソートは、比較的シンプルで理解しやすいため、人々が最初に考えるソート アルゴリズムであることがよくあります。基本的な考え方は、2 つの数値を一度に比較し、それらが正しい順序であることを確認してから、他の項目に進むことです。各レベルの最後に、貴重なアイテムが正しい位置に「並べ替え」られ、最終的には他のアイテムだけが並べ替えられます。原文のソース: http://caibaojian.com/javascript-bubble-sort.html

アルゴリズム実装アイデア

最初の項目と 2 番目の項目を比較します

最初の項目が 2 番目の項目の後ろにある必要がある場合は、それらを入れ替えます

2 番目の項目と 3 番目の項目を比較します

2 番目の項目が 3 番目の項目の後にある場合は、それらを入れ替えます

データの最後まで続けます

このプロセスは、それぞれのデータが完全に並べ替えられるまで数回繰り返されます。サイクル、最後の項目は毎回正しくソートされるため、ソートする項目はますます少なくなります。よりよく理解するために、配列 [3, 2, 4, 5, 1] を比較してみましょう。

比較プロセスの例

1 つ目はポジティブソートで、最初の項目と 2 番目の項目を比較します。2 ~ 3 は小さいため、 3 が最後に配置され、結果は [2,3,4,5,1] になります。

2 番目と 3 番目の項目の順序は正しいので、3 番目と 4 番目の項目も入れ替える必要はありません。正しいです。交換する必要はありません。4 番目と 5 番目のアイテムが交換され、結果は [2,3,4,1,5] になります。

最初と 2 番目のアイテムを再度ループし、3 番目と 4 番目のアイテムを交換します。 [2,3,1,4,5]

3サイクル目、2回目と3回目の交換は[2,1,3,4,5]

4サイクル目、1回目と2回目の交換実装の第一歩[1,2,3,4,5]

のバブル ソートは、配列内の 2 つの項目を交換するメソッドを作成することです。この方法は、多くの非効率的なソートで一般的です。簡単な JavaScript 実装コードは次のとおりです:

function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}
ログイン後にコピー

via 前述したように、この並べ替えアルゴリズムは複数の並べ替えが必要なため、比較的非効率的です。配列に n 個の項目があると仮定すると、計算には 2 の n 乗が必要になります。http://caibaojian.com/javascript-bubble-sort.html

前方バブル アルゴリズムの原文を見てみましょう。

function bubbleSort(items){

    var len = items.length,
        i, j, stop;

    for (i=0; i < len; i++){
        for (j=0, stop=len-i; j < stop; j++){
            if (items[j] > items[j+1]){
                swap(items, j, j+1);
            }
        }
    }

    return items;
}
ログイン後にコピー

via の外側のループはサイクル数を制御し、内側のループは項目間のソート比較です。

逆バブルソート

function bubbleSort(items){
    var len = items.length,
        i, j;

    for (i=len-1; i >= 0; i--){
        for (j=len-i; j >= 0; j--){
            if (items[j] < items[j-1]){
                swap(items, j, j-1);
            }
        }
    }

    return items;
}
ログイン後にコピー

via上記の 2 つのコードの結果は同じで、どちらも小さいものから大きいものにソートされますが、ループの順序がわずかに異なり、どちらも順方向バブルです。

逆バブルソート

は、最初の項目が 2 番目の項目より小さい場合、位置を入れ替えるなど、サイズの変更を実際に決定します。

function bubbleSort2(items){
var len = items.length,
i,j,stop;
for(i=0;i<len; i++){
for(j=0,stop=len-i;j<stop;j++){
if(items[j]<items[j+1]){
swap(items,j,j+1);
}
}
}
return items;
}
ログイン後にコピー

概要

via 繰り返しになりますが、バブル ソートは実際の作業には適用できない場合があります。これは、アルゴリズムを理解し、より多くの知識を習得するための基礎を築くのに役立つ単なるツールです。私たちが最もよく使用するのは、おそらく組み込みの Array.prototype.sort() プロトタイプ メソッドです。これは、より効率的であるためです。



JavaScript バブルソートアルゴリズムに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ 関数ポインターを使用してコードを変換: 効率と再利用性を向上させる C++ 関数ポインターを使用してコードを変換: 効率と再利用性を向上させる Apr 29, 2024 pm 06:45 PM

関数ポインター テクノロジは、コードの効率と再利用性を、具体的には次のように向上させることができます。 効率の向上: 関数ポインターを使用すると、重複するコードが削減され、呼び出しプロセスが最適化されます。再利用性の向上: 関数ポインターを使用すると、一般的な関数を使用してさまざまなデータを処理できるようになり、プログラムの再利用性が向上します。

C# でバブル ソート アルゴリズムを実装する方法 C# でバブル ソート アルゴリズムを実装する方法 Sep 19, 2023 am 11:10 AM

C# でバブル ソート アルゴリズムを実装する方法 バブル ソートは、隣接する要素を複数回比較し、位置を交換することによって配列を配置する、シンプルだが効果的なソート アルゴリズムです。この記事では、C# 言語を使用してバブル ソート アルゴリズムを実装する方法と具体的なコード例を紹介します。まず、バブルソートの基本原理を理解しましょう。アルゴリズムは配列の最初の要素から開始し、それを次の要素と比較します。現在の要素が次の要素より大きい場合は、位置を交換します。現在の要素が次の要素より小さい場合は、その位置を維持します。

PHP 配列のカスタム並べ替えアルゴリズムを作成するためのガイド PHP 配列のカスタム並べ替えアルゴリズムを作成するためのガイド Apr 27, 2024 pm 06:12 PM

カスタム PHP 配列ソート アルゴリズムを作成するにはどうすればよいですか?バブルソート: 隣接する要素を比較および交換することによって配列をソートします。選択ソート: 毎回最小または最大の要素を選択し、現在の位置と入れ替えます。挿入ソート:ソートされた部分に要素を1つずつ挿入します。

Javaのデータ構造とアルゴリズム: 詳細な説明 Javaのデータ構造とアルゴリズム: 詳細な説明 May 08, 2024 pm 10:12 PM

データ構造とアルゴリズムは Java 開発の基礎です。この記事では、Java の主要なデータ構造 (配列、リンク リスト、ツリーなど) とアルゴリズム (並べ替え、検索、グラフ アルゴリズムなど) について詳しく説明します。これらの構造は、スコアを保存するための配列、買い物リストを管理するためのリンク リスト、再帰を実装するためのスタック、スレッドを同期するためのキュー、高速検索と認証のためのツリーとハッシュ テーブルの使用など、実際の例を通じて説明されています。これらの概念を理解すると、効率的で保守しやすい Java コードを作成できるようになります。

C++ 関数のパフォーマンス最適化におけるアルゴリズムの選択と最適化の手法 C++ 関数のパフォーマンス最適化におけるアルゴリズムの選択と最適化の手法 Apr 23, 2024 pm 06:18 PM

C++ 関数のパフォーマンス最適化アルゴリズムの選択: 効率的なアルゴリズム (クイック ソート、バイナリ検索など) を選択します。最適化スキル: 小さな関数のインライン化、キャッシュの最適化、ディープコピーの回避、およびループの展開。実際のケース: 配列の最大要素位置を検索する場合、最適化後に二分探索とループ拡張が使用され、パフォーマンスが大幅に向上します。

さまざまな PHP 配列ソート アルゴリズムの複雑さの分析 さまざまな PHP 配列ソート アルゴリズムの複雑さの分析 Apr 27, 2024 am 09:03 AM

PHP 配列ソートアルゴリズムの複雑さ: バブルソート: O(n^2) クイックソート: O(nlogn) (平均) マージソート: O(nlogn)

バブリングイベントの意味は何ですか バブリングイベントの意味は何ですか Feb 19, 2024 am 11:53 AM

バブリング イベントとは、Web 開発において、要素でイベントがトリガーされると、イベントがドキュメント ルート要素に到達するまで上位の要素に伝播することを意味します。この伝播方法は、泡が下から徐々に上昇していくようなものであるため、バブリングイベントと呼ばれます。実際の開発では、イベントを正しく処理するために、バブリング イベントがどのように機能するかを知り、理解することが非常に重要です。以下では、バブリングイベントの概念と使用法を、具体的なコード例を通して詳しく紹介します。まず、親要素と 3 つの子要素を持つ単純な HTML ページを作成します。

Java データ構造とアルゴリズム: クラウド コンピューティングの実践ガイド Java データ構造とアルゴリズム: クラウド コンピューティングの実践ガイド May 09, 2024 am 08:12 AM

クラウド コンピューティングでは、大量のデータを管理および処理するために、データ構造とアルゴリズムの使用が不可欠です。一般的なデータ構造には、配列、リスト、ハッシュ テーブル、ツリー、グラフなどがあります。一般的に使用されるアルゴリズムには、並べ替えアルゴリズム、検索アルゴリズム、グラフ アルゴリズムなどがあります。 Java の機能を活用することで、開発者は Java コレクション、スレッドセーフなデータ構造、および Apache Commons Collection を使用して、これらのデータ構造とアルゴリズムを実装できます。

See all articles