冒泡排序

冒泡排序大概是人們能想到的最簡單的排序算法了,它的基本思想就是從後向前依次把小的數交換上來,就像氣泡不斷的冒出水面一樣,因此而得名。冒泡排序的時間複雜度爲O(n^2),是一種穩定的排序方法

//冒泡排序算法
void BubbleSort(int H[],int length)
{
    int i = 0;
    int j = 0;
    int flag = 1;      //定義開關,提高冒泡排序性能
    
    for (i = 1; i < length && flag; i++)       //從第一個數開始和後面的進行比較
    {
        flag = 0;
        for (j = length - 2; j >= i; j--) {    //因爲有j+1的存在所以j從倒數第二個數開始向前
            if(H[j + 1] < H[j])
            {
                swap(H, j + 1, j);
                flag = 1;            //當沒有數據交換的時候就跳出循環
            }
        }
    }
}


時間複雜度:

最好的情況就是數據本身就有序,當我們比較n -1 次後發現沒有數據交換,則跳出循環,時間複雜度爲O(n)

最壞的情況是排序出現逆序即從小到大排列的時候,這時需要交換的次數爲1+2+3+...+(n-1) = n(n-1)/2

因此時間複雜度爲O(n^2)

發佈了28 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章