冒泡排序(Bubble Sort)是一種非常簡單的排序算法,它重複遍歷待排序序列,每次從第一個元素向後遍歷,比較兩兩相鄰的兩個元素,如果前一個元素比後一個元素大,就交換它們的位置,這樣每趟遍歷完成後,大的數總是會有序的“沉”到後面,而小的數則“浮”到前面。
例如對待排序列5 1 4 2 8,應用冒泡排序的排序過程如下
第一趟:
( 5 1 4 2 8 ) –> ( 1 5 4 2 8 ), 比較1和5,因爲5比較大,所以交換之
( 1 5 4 2 8 ) –> ( 1 4 5 2 8 ), Swap since 5 > 4
( 1 4 5 2 8 ) –> ( 1 4 2 5 8 ), Swap since 5 > 2
( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ), 因爲5比8小,所以不用交換
第二趟:
( 1 4 2 5 8 ) –> ( 1 4 2 5 8 )
( 1 4 2 5 8 ) –> ( 1 2 4 5 8 ), Swap since 4 > 2
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )
現在,數組已排好序,但是算法並不知道,所以還是會再進行一趟掃描,發現沒有任何元素交換,才知道排序完成。
第三趟:
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) –> ( 1 2 4 5 8 )
冒泡排序對n個元素排序需要O(n^2)次比較,且可以原地排序,該算法雖然簡單,但是當元素數量多的時候排序效率很低。
冒泡排序是與插入排序擁有相等的運行時間,但是兩種