排序一 氣泡排序的簡單優化

2022-07-27 12:15:12 字數 844 閱讀 6200

說明:很簡答的優化,卻有很多人容易在面試時候栽在這個簡單的問題上。

「氣泡排序」在面試中是很容易被問到的排序演算法,也是最簡單的排序演算法,當被問到,「氣泡排序怎麼優化?」,很多人就懵了,冒泡還能優化?答案是可以的。

但是,在對50000個隨機數進行測試中,發現,優化的冒泡和一般的冒泡在效能上幾乎一樣。

於是又測試了25000有序25000無序的50000個隨機數,優化的冒泡確實能快一些。

//通俗冒泡     22216ms(隨機) 14650ms(前半有序) 19977ms(後半有序)

//優化冒泡     21238ms(隨機) 11983ms(前半有序) 16607ms(後半有序)

1. 這是一般的氣泡排序。

1         /// 2         /// 通俗冒泡

3 ///

4 public static void bubblesortcommon(int arr)

5 18 }

19 }

20 }

2. 這是優化後的氣泡排序。僅僅加了乙個標識,相對於通俗的氣泡排序,卻能更好地處理已經排好序或者幾乎排好序的陣列,避免做無用功。

1         /// 2         /// 優化冒泡

3 ///

4 public static void bubblesortoptimize(int arr)

5 21 }

22 len--;

23 }

24 }

氣泡排序的簡單優化

includeint main int n 10 for int i 0 i時間複雜度 最壞情況 o n 2 最好情況 o n 平均複雜度 o n 2 思路 優化的地方就在於如果第一趟或者中間某一趟過後,陣列已經變得有序,那麼接下來不必再做迴圈了。每趟前利用乙個標記,flag 0 若有相鄰數的交換,...

C 氣泡排序 氣泡排序的優化

本文包含氣泡排序的三種實現方式 分別為氣泡排序初級版,公升級版,終級版 自己起的名字 使用時只要使用終極版就本以了,終級版為公升級版的優化版本 至於初極版和公升級版只是為了幫助理解 氣泡排序的時間複雜度為o n include include include include include incl...

氣泡排序以及氣泡排序的優化

很早接觸過氣泡排序法,但一直沒有真正的理解,只是為了記住而學習,今天又重新看了一下,其實氣泡排序法第一次排序會把最大的冒到最上面,第二次會把次大的泡冒到最大的後面,一次類推 另外在排序的次數上會逐漸減少。看 void bubble sort int a,int n 其實還可以優化一下,當發現沒有進行...