欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ruby的字符串與數(shù)組求最大值的相關(guān)問題討論

 更新時(shí)間:2016年03月31日 14:48:42   作者:GALAXY_ZMY  
這篇文章主要介紹了Ruby中的字符串與數(shù)組求最大值的相關(guān)問題,文中還提到了sort排序方法的相關(guān)用法,需要的朋友可以參考下

max方法

b=[1,3,55,777,2,4,6,8,0]

對于數(shù)值型的數(shù)據(jù),max會得到數(shù)組的最大值,min得到數(shù)組的最小值

b.max => 777
b.min => 0

而對于字符串型數(shù)組比較大小沒有實(shí)際意義,
ruby中給出的例子是

# enum.max         -> obj
# enum.max { |a, b| block } -> obj
#a = %w(albatross dog horse)
#a.max          => "horse"
# a.max { |a, b| a.length <=> b.length } #=> "albatross"

實(shí)際中的實(shí)驗(yàn)

d=%w(albatross dog horse ddd dasgfds)
d.max => "horse"

有點(diǎn)怪,怎么回事
為此打印了一下比較直觀的數(shù)字字符串

a = ["1", "3", "55", "777", "2", "4", "6", "8", "0"]
def max(first,*rest) 
 max=first 
 rest.each do |x|
  p "---#{x}---#{max}"
  max=x if x>max 
  p "---#{x}---#{max}"
  max 
end

運(yùn)行

復(fù)制代碼 代碼如下:
a.max

結(jié)果為

"---3---1"
"---3---3"
"---55---3"
"---55---55"
"---777---55"
"---777---777"
"---2---777"
"---2---777"
"---4---777"
"---4---777"
"---6---777"
"---6---777"
"---8---777"
"---8---8"
"---0---8"
"---0---8"
 => "8"

問題出來了,"8" > "777" => true,再測試

"7" > "777" => false
"6" > "777" => false
"9" > "777" => true
"10" > "777" => false
"11" > "777" => false
"70" > "777" => false
"80" > "777" => true

該崩潰了,規(guī)律好不友好,因?yàn)橛玫膍ax這個(gè)比較大小的方法,之前認(rèn)為他是通過ASCII編碼判斷大小的,今天看有關(guān)sort排序的問題時(shí)發(fā)現(xiàn)這個(gè)問題,此處其實(shí)是通過字典排序的方法取的最大值。

下面就順便來看一下Ruby中的sort:

sort排序方法

ary.sort          -> new_ary
ary.sort { |a, b| block } -> new_ary
enum.sort_by { |obj| block }  -> array
enum.sort_by          -> an_enumerator

實(shí)例

h=['1','3','13','10','7']
 A. p h.sort
 B. p h.sort{|a,b| a.to_i <=> b.to_i}
 C. p h.sort_by{|x| x.to_i}

輸出如下:

A. ["1", "10", "13", "3", "7"] 
B. ["1", "3", "7", "10", "13"] 
C. ["1", "3", "7", "10", "13"]

1.在沒有指定塊的時(shí)候,sort默認(rèn)的排序是按著字典的順序排序的。
2.如果指定了塊,將數(shù)值進(jìn)行排序是塊制定方法的數(shù)值的大小排序的。
3.sort_by方法用執(zhí)行塊的代碼所生成的結(jié)果來排序,對每個(gè)元素只執(zhí)行一次塊的調(diào)用,比B的效率快。

相關(guān)文章

  • Ruby中使用SWIG編寫ruby擴(kuò)展模塊實(shí)例

    Ruby中使用SWIG編寫ruby擴(kuò)展模塊實(shí)例

    這篇文章主要介紹了Ruby中使用SWIG編寫ruby擴(kuò)展模塊實(shí)例,SWIG是一種簡化腳本語言與C/C++接口的開發(fā)工具,需要的朋友可以參考下
    2014-09-09
  • Ruby中的類Google Map/Reduce框架Skynet介紹

    Ruby中的類Google Map/Reduce框架Skynet介紹

    這篇文章主要介紹了Ruby中的類Google Map/Reduce框架Skynet介紹,Skynet是一款創(chuàng)建分布式應(yīng)用程序的框架,需要的朋友可以參考下
    2015-01-01
  • ruby實(shí)現(xiàn)網(wǎng)頁圖片抓取

    ruby實(shí)現(xiàn)網(wǎng)頁圖片抓取

    本文給大家分享的是個(gè)人使用ruby編寫的抓取網(wǎng)頁圖片的代碼,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • Ruby中使用多線程隊(duì)列(Queue)實(shí)現(xiàn)下載博客文章保存到本地文件

    Ruby中使用多線程隊(duì)列(Queue)實(shí)現(xiàn)下載博客文章保存到本地文件

    這篇文章主要介紹了Ruby中使用多線程隊(duì)列(Queue)實(shí)現(xiàn)下載博客文章保存到本地文件,本文給出了實(shí)現(xiàn)代碼、并對代碼的核心部分做了講解,同時(shí)給出了運(yùn)行效果圖,需要的朋友可以參考下
    2015-01-01
  • Windows下ruby語言安裝教程

    Windows下ruby語言安裝教程

    這篇文章主要介紹了Windows下ruby語言安裝教程,本文使用rubyinstaller提供的安裝包安裝,并給出圖文說明,非常簡單,需要的朋友可以參考下
    2015-02-02
  • 使用Ruby來處理JSON的簡單教程

    使用Ruby來處理JSON的簡單教程

    這篇文章主要介紹了使用Ruby來處理JSON的簡單教程,用到了Ruby gem,需要的朋友可以參考下
    2015-04-04
  • Ruby中常用的字符串處理函數(shù)使用實(shí)例

    Ruby中常用的字符串處理函數(shù)使用實(shí)例

    這篇文章主要介紹了Ruby中常用的字符串處理函數(shù)使用實(shí)例,本文總結(jié)了Ruby中最常用的字符串處理函數(shù),如返回字符串的長度、判斷字符串中是否包含另一個(gè)串、字符串插入、字符串分隔、默認(rèn)分隔符為空格等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Ruby編程中的命名風(fēng)格指南

    Ruby編程中的命名風(fēng)格指南

    這篇文章主要介紹了Ruby編程中的命名風(fēng)格指南,包括變量和自定義方法等的常用命名格式,需要的朋友可以參考下
    2015-08-08
  • ruby聲明式語法的實(shí)現(xiàn)例子

    ruby聲明式語法的實(shí)現(xiàn)例子

    這篇文章主要介紹了ruby聲明式語法的實(shí)現(xiàn)例子,聲明式編程是一種編程范型,與命令式編程相對立,需要的朋友可以參考下
    2014-11-11
  • Ruby常用文件操作代碼實(shí)例

    Ruby常用文件操作代碼實(shí)例

    這篇文章主要介紹了Ruby常用文件操作代碼實(shí)例,如新建文件、輸出文件內(nèi)容、IO操作、輸出文件路徑、stringio使用等內(nèi)容,需要的朋友可以參考下
    2015-05-05

最新評論