同樣的先上這張圖
下面分析交換排序之氣泡排序:
氣泡排序和選擇排序很相似,都是遍歷一趟把最大的元素放到最後面,但選擇排序屬於選擇排序,而氣泡排序屬於交換排序,原因在於氣泡排序在找最大元素的時間,兩兩比較之後會作交換,這樣使得一趟排序下來不僅把最大元素放到了後面,同時讓前面的元素也更加有序。
原版的氣泡排序較之選擇排序效率上不僅沒有提高,反而會更差。因為氣泡排序同樣也需要nxn的時間,而且氣泡排序還多了很多交換的時間開銷。但是,改進版的氣泡排序會比選擇排序效率高些,正是前面那些不斷的交換,使得氣泡排序有可能提前退出,而不用做n趟排序。
氣泡排序最差及平均時間複雜度為o(n2),最好情況只需要一趟排序,時間複雜度為o(n)。
氣泡排序空間複雜度為o(1)。
氣泡排序在交換過程中只有前面元素大於後面元素才會作交換,所以相同元素的相對位置不會被破壞,因此它是穩定的。
as**:
/**
* 氣泡排序
* 外層迴圈標記已經排好序的個數
* 內層迴圈遍歷前面未排序的元素,兩兩比較做交換,把最大元素換到最後
*/private function bubblesort(arr:array):void
}if(finish)}}
c++**
/*
* 氣泡排序
* 最好o(n),最壞及平均o(n2)
* o(1)
* 穩定
*/template void sorthelp::bubblesort(t l, int length)
} if (!bswap)}}
總結,氣泡排序平均及最壞時間複雜度為o(n2),最好時間複雜度為o(n),空間複雜度為o(1),穩定。 排序演算法之氣泡排序
參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...
排序演算法之氣泡排序
對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...
排序演算法之氣泡排序
氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,...