検索

バブルソート

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

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 サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

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

メモ帳++7.3.1

メモ帳++7.3.1

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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