激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Ruby - 冒泡排序算法及Ruby版的簡單實現

冒泡排序算法及Ruby版的簡單實現

2020-05-10 14:44lvpro Ruby

冒泡排序為最基本的排序算法之一,其時間復雜度為O(n^2),這里我們就來簡單看一下冒泡排序算法及Ruby版的簡單實現,首先還是先來了解算法原理:

算法原理:

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

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

回到剛才的數組,第二輪比較開始,現在的狀態是[1, 3, 2, 4]
比較1和3,1小于3,跳過 -> [1, 3, 2, 4]
比較3和2,3大于2,交換 -> [1, 2, 3, 4]
這一輪到這里就可以停止了,因為第一輪已經把最大的4頂到了最后,所以第二輪只要確保第二大的數頂到倒數第二就行。

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

?
1
2
3
4
5
6
7
8
9
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

延伸 · 閱讀

精彩推薦
  • RubyRuby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼

    Ruby進行文件信息輸出實例代碼,數據是隨機的,所以每次的記錄都會不同。 ...

    ruby教程網2962020-04-10
  • RubyRuby簡潔學習筆記(一):字符串、數字、類和對象

    Ruby簡潔學習筆記(一):字符串、數字、類和對象

    這篇文章主要介紹了Ruby簡潔學習筆記(一):字符串、數字、類和對象,本文是學習筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyCentOS中配置Ruby on Rails環境

    CentOS中配置Ruby on Rails環境

    經過一個上午的折騰,終于把ROR環境在CentOS中搞定,繞了很多彎路,把文章寫下來總結一下 ...

    可樂加糖4762020-04-12
  • Ruby簡要說明Ruby中的迭代器

    簡要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動態語言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數,只有方法.而且實際上有不止一種方法.這一節我們介紹 訪問控制 (accesscontrols). 想想當我們在最高層而不是在一個類的定義里定義...

    ruby教程網3572020-04-08
  • RubyRuby設計模式編程中使用Builder建造者模式的實例

    Ruby設計模式編程中使用Builder建造者模式的實例

    這篇文章主要介紹了Ruby設計模式編程中使用Builder建造者模式的實例,建造者模式將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表...

    范孝鵬2192020-05-07
  • RubyRuby環境下安裝使用bundler來管理多版本的gem

    Ruby環境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應用實例來進行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产91精品久久久久久 | 亚洲一级毛片 | 精品国产一区二区亚洲人成毛片 | 欧美日韩免费看 | 88xx成人永久免费观看 | 美女黄污视频 | 91av在线影院| 国产精品久久久久无码av | 亚洲电影在线播放 | 久久手机在线视频 | 精品偷拍久久 | 成人444kkkk在线观看 | 亚洲精品无码不卡在线播放he | 激情网站免费观看 | 黄在线免费看 | 久久久久久久久久久亚洲 | 伦理三区| 中文字幕网址 | 成人在线视频免费 | 激情综合视频 | 九九热在线视频免费观看 | 精品成人久久久 | 中文字幕一二三区芒果 | 羞羞视频免费网站 | 国产一级毛片高清视频 | 婷婷中文字幕一区二区三区 | 国产成人强伦免费视频网站 | 色妹子久久 | 国产免费久久久久 | 久久91久久 | 黄在线观看在线播放720p | 精国品产一区二区三区有限公司 | 成人在线视频精品 | 欧美18一12sex性处hd | 最新中文字幕在线视频 | 国产羞羞视频在线观看 | 国产成人高清成人av片在线看 | 久久毛片 | 九九综合视频 | 被摁着灌浓精囚禁高h1v1 | 福利在线免费 |