佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 冒泡排序算法及Ruby版的簡單實現(xiàn)

冒泡排序算法及Ruby版的簡單實現(xiàn)

熱門標(biāo)簽:客戶服務(wù) 硅谷的囚徒呼叫中心 百度AI接口 電話運營中心 語音系統(tǒng) Win7旗艦版 企業(yè)做大做強 呼叫中心市場需求

算法原理:

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點,最后的元素應(yīng)該會是最大的數(shù)。
針對所有的元素重復(fù)以上的步驟,除了最后一個。
持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。

實現(xiàn)
假設(shè)有這樣一個數(shù)組: [4, 1, 3, 2]
冒泡排序為從第一個數(shù)開始,吧這個數(shù)與后面的數(shù)比較,如果這個數(shù)比后面的大,就交換他們的位置。
比如,第一次比較4和1,發(fā)現(xiàn)4比1大,交換 -> [1, 4, 3, 2]
第二次比較4和3,發(fā)現(xiàn)還是4大,交換 -> [1, 3, 4, 2]
第三次比較4和2,仍然4比2大,交換 -> [1, 3, 2, 4]
這樣在進行了第一輪循環(huán)之后,最大的數(shù)4就被頂?shù)綌?shù)組的最后去了,就像泡泡一樣從水底冒起來一樣。那么,要完成整個數(shù)組的排序,只需要把最大的數(shù)頂?shù)阶詈?,然后第二輪再把第二大的?shù)頂?shù)降箶?shù)第二的位置,再來第三輪。。。。一直循環(huán)下去。

回到剛才的數(shù)組,第二輪比較開始,現(xiàn)在的狀態(tài)是[1, 3, 2, 4]
比較1和3,1小于3,跳過 -> [1, 3, 2, 4]
比較3和2,3大于2,交換 -> [1, 2, 3, 4]
這一輪到這里就可以停止了,因為第一輪已經(jīng)把最大的4頂?shù)搅俗詈?,所以第二輪只要確保第二大的數(shù)頂?shù)降箶?shù)第二就行。

然后繼續(xù)第三輪(雖然目前看起來已經(jīng)排序完成了)
比較1和2,不用交換[1, 2, 3, 4]
這里比較就全部完成。原理非常簡單。

def bubble_sort(list)
 list.each_index do |index|
  (list.length - index - 1).times do |e|
   if list[e] > list[e + 1]
    list[e], list[e + 1] = list[e + 1], list[e]
   end
  end
 end
end

您可能感興趣的文章:
  • Ruby實現(xiàn)的各種排序算法
  • Ruby實現(xiàn)的合并排序算法
  • Ruby實現(xiàn)的3種快速排序算法
  • Ruby一行代碼實現(xiàn)的快速排序
  • ruby實現(xiàn)的插入排序和冒泡排序算法
  • Ruby實現(xiàn)插入排序算法及進階的二路插入排序代碼示例

標(biāo)簽:長沙 海南 山西 喀什 崇左 山西 安康 濟南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《冒泡排序算法及Ruby版的簡單實現(xiàn)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    巴楚县| 徐州市| 南康市| 荆州市| 翁源县| 安宁市| 科尔| 扶风县| 梁河县| 玉溪市| 林芝县| 高尔夫| 黄石市| 离岛区| 舒城县| 峨眉山市| 昌图县| 昆明市| 涡阳县| 慈溪市| 大安市| 海门市| 淮北市| 理塘县| 安徽省| 沁水县| 措美县| 元氏县| 浦东新区| 江山市| 榆社县| 库尔勒市| 军事| 舟山市| 云安县| 祁东县| 花莲县| 小金县| 仁怀市| 酒泉市| 宝鸡市|