讓程式設計改變世界
change the world by program
記得小甲魚在講《零基礎入門學習python》的時候,在講《零基礎入門學習c語言》的時候,在講《零基礎入門學習delphi》的時候, 在這些程式語言的講解中,都不約而同的會提及氣泡排序演算法。
那麼作為《資料結構和演算法》排序章節要講的第乙個內容,那肯定非氣泡排序不可了!
氣泡排序的基本思想是:兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。
氣泡排序的實現在細節上可以有很多種變化,我們從最原始的說起,剛剛的這一種是大部分初學者容易一下子就寫出來的,但注意,嚴格意義上來說並不符合氣泡排序的定義!1. 兩兩注意是相鄰的兩個元素的意思
2. 如果有n個元素需要比較n-1次,每一輪減少1次比較
3. 既然叫氣泡排序,那就是從下往上兩兩比較,所以看上去就跟泡泡往上冒一樣。
我們一起來動手實現「正宗的」氣泡排序演算法並比較兩者的效率差異吧!
我們驚奇的發現其實兩者效率木有不同丫!但是按理論來說,正版的東西應該比較有優勢才對丫……
嗯,沒錯,有些朋友發現了,我們這個正宗的版本其實是還有公升級的潛力的!
就像咱魚c論壇的終身vip會員一樣,隨著教學服務的不斷增加,價值也在不斷上公升!我們發現如果使用正宗的氣泡排序演算法,當i等於1執行完的時候,我們發現程式只進行兩兩相鄰元素的比較,而不用進行任何移動,所以完全可以不用再繼續迴圈。
有些朋友就可能就會說了,那屌絲版的氣泡排序難道就不能這麼操作嗎?!(看,屌絲版的氣泡排序每一次迴圈都是指定的元素跟其他每乙個元素依次進行比較,如果沒有發生移動,只能證明該元素比其他元素小,但完全說明不了其他元素之間的關係,對吧?!)
o~k~這節課就講解到這裡,非常感謝大家的支援。
資料結構和演算法 排序演算法 氣泡排序
排序演算法 排序演算法,我們想要把線性表中的無序序列,排成有序序列,的演算法,就是排序演算法,排序演算法的穩定性 舉例 假設對下面的元組要以他們的第乙個數字來排序。4,1 3,1 3,7 5,6 如果你排序之後,3,1 3,7 和原來的順序一樣,就是穩定的,否則就是不穩定的,3,1 3,7 4,1 ...
資料結構和演算法 氣泡排序
它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同...
資料結構 氣泡排序演算法
1 氣泡排序 氣泡排序之所以叫氣泡排序,是因為它每一種元素都像小氣泡一樣根據自身大小一點一點往陣列的一側移動。基本思想是假如需要排序的陣列元素有n個,則進行n 1輪比較,第k輪比較中元素的比較次數為n k次,演算法的複雜度準確界為o n2 演算法步驟如下 比較相鄰的元素。如果第乙個比第二個大,就交換...