作為Java程式設計師,簡單的算法,必須要掌握的。尤其初級開發人員在面試過程或者筆試都會有相應算法題,今天我們講解冒泡排序算法是如何實現的以及優化方法。
何為冒泡排序
冒泡排序的基本思路:通過對待排序系列從前向後,依次比較相鄰元素的值,若發現逆序就交換,意思就是使較大的元素從前向後移,好比水低下的氣泡一樣逐漸向上冒泡,一個道理的。
冒泡排序優缺點
優點:比較簡單、空間複雜度較低、是穩定的一種排序。缺點:時間複雜度太高、效率比較慢、一輪比較都需要換位置,所以效率不高,假如現在一個數組裡面有N個數,那麼排序完成需要比較N*(N-1)/2次。
冒泡排序規則
每一趟排序的次數在逐漸減少的總的進行數組的大小減1次大的循環每一趟比較完都會有最大值出現冒泡排序實現代碼如下圖
冒泡排序的實現步驟如下圖
冒泡排序的優化
冒泡優化就是說,如果我們發現在排序過程中,沒有發生一次交換,我們可以讓它提前結束,這就是優化。當我們在排序過程,大家都知道,各元素是不斷接近自己的位置的,但是有時候排序並不是需要換位置,本身就是有順序的,這時我們在排序過程中設置一個標標記flag判斷一下元素是否進行交換(標記flag自己定義),這樣大大減少必要的比較。代碼如下圖:
總結冒泡排序核心思想
冒泡排序的比較相鄰的元素的,第一個比第二個大就要交換他們兩個的位置。冒泡排序對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,每次排序結束都會有最大值出現。冒泡排序是持續每次對越來越少的元素重複上一步的步驟的,直到最後一輪沒有比較數字就結束。冒泡排序是一個經典的排序算法,值得大家掌握,平時小的筆試都會出現。我是從事大數據、Java後端開發的,如果你也是正在考慮學習或者這學習中遇到什麼問題,可以評論區留言或者私信,感興趣的朋友可以關注我,後續會更新關於大數據、Java開發的技術文章。