ホームページ php教程 PHP开发 バブルソートアルゴリズム

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

Dec 19, 2016 pm 01:23 PM
バブルソート

交換ソートの基本的な考え方は、ソート対象のレコードのキーワードをペアごとに比較し、2 つのレコードの順序が逆であることが判明した場合、レコード内にレコードがなくなるまで交換を実行します。逆の順序。

エクスチェンジソートの基本的な考え方を適用した主なソート方法は、バブルソートとクイックソートです。

バブルソート

1. ソート方法
ソートされたレコード配列 R[1..n] を縦に並べ、各レコード R[i] を R[i].key の重みを持つバブルとみなします。軽い泡は重い泡の下には存在できないという原則に従って、配列 R は下から上に走査されます。この原則に違反する軽い泡は上に「浮く」ことになります。最後の 2 つの泡が上部の軽い泡と下部の重い泡になるまで、これが繰り返されます。
(1)初期
R[1..n]は順序付けされていない領域です。

(2) 最初のスキャン
乱れた領域の下から上に向けて、隣接する 2 つの気泡の重さを比較し、軽い方が下にあり、重い方が上にあることが判明した場合は、位置を交換します。つまり、(R[n], R[n-1])、(R[n-1]、R[n-2])、...、(R[2]、R[1]) を比較します。シーケンス; 各ペア Bubble (R[j+1], R[j]) について、R[j+1].key 最初のスキャンが完了すると、「最も軽い」バブルが間隔の先頭に浮かび上がります。つまり、最小のキーワードを持つレコードが最も高い位置 R[1] に配置されます。

(3) 2回目のスキャン
R[2..n]をスキャンします。スキャンが完了すると、「2 番目に軽い」バブルが R[2] の位置に浮かび上がります...
最後に、n-1 回のスキャンの後、順序付けされた領域 R[1..n] を取得できます
注:
i 番目のスキャンのとき、R[1..i-1] と R[i..n] はそれぞれ現在の順序付けされた領域と順序付けされていない領域です。スキャンは依然として、乱れた領域の下部から領域の上部まで行われます。スキャンが完了すると、エリア内の最も明るいバブルが最上位の位置 R[i] に浮上し、その結果、R[1..i] が新しい順序付けされたエリアになります。

2. バブルソート処理の例
キーワード配列 49 38 65 97 76 13 27 49

3. ソートアルゴリズム
(1) 分析
各ソート処理にはバブルが追加されているためn-1 個のソートの後、順序付けされた領域には n-1 個のバブルが存在し、無秩序領域内のバブルの重量は常に順序付けられた領域内のバブルの重量以上になります。バブル ソート プロセス全体では、最大でも n-1 個のソート パスが必要です。
特定のソートパスでバブルの位置の交換が見つからない場合、ソートされる未順序領域内のすべてのバブルが上部の軽いバブルと下部の重いバブルの原則を満たしていることを意味します。ソートプロセスはこのパスでソートでき、その後終了します。このため、以下に示すアルゴリズムではブール交換が導入され、各並べ替えが開始される前に FALSE に設定されます。並べ替え中に交換が発生した場合は TRUE に設定します。交換は各ソート パスの最後にチェックされます。交換が発生しない場合、アルゴリズムは終了し、次のソート パスは実行されません。

(2) 特定のアルゴリズム
void BubbleSort(SeqList R)
{ //R (l..n) は、ボトムアップ スキャンを使用して、R
int i, j に対してバブル ソートを実行します。 Boolean Exchange; //交換フラグ
for(i=1;i Exchange=FALSE; //この並べ替えの前に交換フラグは false である必要があります。 starting
for (J = n-1; j & gt; = i; j---) // 現在の順序付けされていない領域をスキャン R [i..n]











🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜 🎜?{//Ex変更記録🎜 🎜 //交換が発生したため、交換フラグが true に設定されます 🎜 } . D} // endfor (外側のサイクル)}} // バブルソート🎜🎜。 🎜🎜🎜🎜🎜🎜🎜 その他のバブルソートアルゴリズム関連記事については、PHP を参照してください。中国語のサイトです! 🎜
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

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

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

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

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

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

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

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

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

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

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

Go 言語で時間計算量と空間計算量を分析する Go 言語で時間計算量と空間計算量を分析する Mar 27, 2024 am 09:24 AM

Go は、書きやすく、読みやすく、保守しやすいように設計されていると同時に、高度なプログラミング概念もサポートする、人気が高まっているプログラミング言語です。時間計算量と空間計算量は、アルゴリズムとデータ構造の解析における重要な概念であり、プログラムの実行効率とメモリ サイズを測定します。この記事では、Go 言語の時間計算量と空間計算量の分析に焦点を当てます。時間計算量 時間計算量とは、アルゴリズムの実行時間と問題のサイズとの関係を指します。時間は通常 Big O 表記で表されます

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

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

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

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

See all articles