NH.A.0001__zabbix_lamp+zabbxix.server/zabbix.agent.yum源安裝_V2020.10.22
氣泡排序
什麼是氣泡排序
氣泡排序(Bubble Sort)是一種典型的交換排序演算法,通過交換資料元素的位置進行排序
原理
比較兩個相鄰的元素,將值大的元素交換至右端(以從小到大排序為例),動態效果如下圖:
舉例說明(從小到大排序為例,刪除線標識的是相互比較的兩個數)
最初的陣列 【1,5,4,7,3】
第一輪排序:
【1,5,4,7,3】變為【1,5,4,7,3】
【1,5,4,7,3】變為【1,4,5,7,3】
【1,4,5,7,3】變為【1,4,5,7,3】
【1,4,5,7,3】變為【1,4,5,3,7】
一輪排序後 【1,4,5,3,7】
第二輪比較:
【1,4
【1,4,5,3,7】變為【1,4,5,3,7】
【1,4,5,3,7】變為【1,4,3,5,7】
二輪排序後 【1,4,3,5,7】
第三輪排序:
【1,4,3,5,7】變為【1,4,3,5,7】
【1,4,3,5,7】變為【1,3,4,5,7】
三輪排序後 【1,3,4,5,7】
第四輪排序:
【1,3,4,5,7】變為【1,3,4,5,7】
程式碼
public class BubbleSort{ public int[] bubbleSort(int[] arr){ // 外層迴圈 for(int i = 0; i < arr.length; i++){ // 內層迴圈 for(int j = 0; j < arr.length - i - 1; j++){ // 交換位置 if(arr[j] > arr[j + 1]){ int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } }
程式碼理解:“N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數為(N-i)次,外層迴圈控制比較輪數,內層迴圈控制每輪比較次數。“對於這種說法,沒問題,但我個人覺得就是你知道氣泡排序什麼原理再去看這句話沒問題,但你如果從這句話去理解氣泡排序容易造成混亂。這句話可以作為你你記憶和檢驗程式碼的一個依據,理解的話還是從原理出發。
思路:【1️⃣2️⃣3️⃣4️⃣5️⃣】程式碼就是要實現這個原理,先寫內部迴圈,就寫第一次排序,怎麼依次進行相鄰元素比較,然後大的向右移動,然後在寫外部迴圈,結合內部迴圈怎麼滿足上面說的這種效果。
總結
(從小到大排序為例)其實每一輪排序都是從開始然後相鄰元素兩兩比較,大的右移,直到最大一個數冒出,只不過每一輪比較之後,下一輪比較都會少一個元素進行比較,因為第一輪當中兩兩比較,確定出最大數,然後第二輪就不用再讓最大數參與比較了,因為已經確定最大數是誰了,只需要比較其他元素就可以了,同理第二輪比較可以確定一個第二大的數,一次迴圈下去就可以確定第三大,第四大,第五大......進而排序完成。
參考資料
https://www.cnblogs.com/onepixel/p/7674659.html