バブル ソート (C++) の完全なコード

アルゴリズム学習

私は機械の研究犬であり、アルゴリズムに興味があります。これは私が独学で勉強したアルゴリズムの記録です。
1日目: バブルソート

1. バブルソートの原理?

1. 隣接する要素を後ろから前に順番に比較します。昇順で並べ替える場合は、後の要素が前の要素よりも小さくなり、2 つの要素が交換されます。降順はその逆になります。

2. 最初のペアから最後のペアまで、隣接する要素の各ペアに対して同じことを行います。一連の比較と交換の後、最後の要素が最小 (または最大) の数値になり、この数値は後続の比較演算に参加する必要はありません。

3. すべての要素に対して上記の手順を繰り返します。

4. 比較する数値のペアがなくなるまで、要素の数を減らしながら上記の手順を繰り返します。
例は次のとおりです
ここに画像の説明を挿入

2. コアコード

コードはテストされており、安定していて効果的です

//函数写在Algorithm这个类里面了,并且是用模板方式编写
//这是为了函数能适应各种类型的数据
template<class T1>
vector<T1> Algorithm::bubblesort(vector<T1> array)
{
    
    
    int len = array.size();
    for(int i=0;i<len-1;i++)//n-1次冒泡
    {
    
    
        for(int j = 0;j<len-1-i;j++)//每一次冒泡需要两两比较len—1-i次
        {
    
    
            //交换两数操作
            int tem =  array[j+1];
            if(array[j] < array[j+1])//从小到大就大于号,从大到小就小于号
            {
    
    
                array[j+1] = array[j];
                array[j] = tem;
            }

        }
    }
    return  array;

}

3. アルゴリズムの複雑さの分析

バブル ソートは 2 つのネストされたループのため、複雑さは O(n2) になります。この複雑さは、大量のデータを並べ替えるのにかかる時間を考えると耐えられないため、あまり使用されません。次のセクションでは、最も一般的に使用される並べ替えアルゴリズムであるクイック ソートについて学習します。アルゴリズムの平均複雑さは O(nlogn) です。

おすすめ

転載: blog.csdn.net/bookshu6/article/details/121670050