1. アルゴリズムの説明
バブルソート: 隣接するデータを順番に比較し、小さなデータを前に置き、大きなデータを後ろに置きます。つまり、最初のパスで 1 番目と 2 番目の数値を比較し、大きな数値を後ろに置きます。 、小数点を先頭にして 2 番目の数値を 3 番目の数値と比較し、大きな数値を最後に、小数点を前に置くというように、最大の数値が 2 番目のパスの最後の位置に「ロール」されます。次に大きい数値を「ロール」します。最後から 2 番目の位置までスクロールします。ソートは n-1 (n は順序付けされていないデータの数) 回で完了します。
次の 5 つの順序なしデータを例に挙げます:
40 8 15 18 12 (この記事では、最初のパスの比較プロセスのみが詳しく説明されています)
最初のパス: 8 15 18 12 40
2 番目のパストリップ: 8 15 12 18 40
3 回目のトリップ: 8 12 15 18 40
4 回目のトリップ: 8 12 15 18 40
2. アルゴリズム分析
平均時間計算量: O(n2)
space Complexity: O( 1) (交換用)
安定性: 安定しています
3. アルゴリズムの実装
//交换data1和data2所指向的整形 void DataSwap(int* data1, int* data2) { int temp = *data1; *data1 = *data2; *data2 = temp; } /******************************************************** *函数名称:BubbleSort *参数说明:pDataArray 无序数组; * iDataNum为无序数据个数 *说明: バブルソート *********************************************************/ void BubbleSort(int* pDataArray, int iDataNum) { for (int i = 0; i < iDataNum - 1; i++) //走iDataNum-1趟 for (int j = 0; j < iDataNum - i - 1; j++) if (pDataArray[j] > pDataArray[j + 1]) DataSwap(&pDataArray[j], &pDataArray[j + 1]); }
4. アルゴリズムの最適化
単純にバブルソートアルゴリズムを最適化し、比較プロセス中に交換があるかどうかを記録することもできます。交換がない場合は、配列全体が順番に並べ替えプロセスを終了しています。そうでない場合は、次の比較が続行されます。
/******************************************************** *函数名称:BubbleSort *参数说明:pDataArray 无序数组; * iDataNum为无序数据个数 *说明: バブルソート *********************************************************/ void BubbleSort(int* pDataArray, int iDataNum) { BOOL flag = FALSE; //记录是否存在交换 for (int i = 0; i < iDataNum - 1; i++) //走iDataNum-1趟 { flag = FALSE; for (int j = 0; j < iDataNum - i - 1; j++) if (pDataArray[j] > pDataArray[j + 1]) { flag = TRUE; DataSwap(&pDataArray[j], &pDataArray[j + 1]); } if (!flag) //上一趟比较中不存在交换,则退出排序 break; } }
その他のバブルソート関連記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
