使用sort對數值進行排序

看一下這個練習。

  • 定義方法max_2_sum,它接受一個整數數組作爲參數,並返回該數組中最大的兩個元素的和。對於空數組它應該返回0。對於只有一個元素的數組,它應該返回此元素。

 這個練習需要注意以下幾點:

1.對傳入的參數數量進行判斷,無參數傳入時輸出0;一個參數傳入時輸出參數本身;兩個以上參數傳入時返回最大的兩個元素的和。

2.既然求兩個最大元素的和,就要對數組進行排序。而Ruby中的sort方法只是根據ASCII碼進行排序,我在這裏使用到了sort_by方法。

def max_2_sum(a)
  total = 0
  if a.size == 0
    p total
  else if a.size == 1
         p a[0].to_s.to_i
       else
         a.sort_by! {|i| i.to_s.to_i}
         a.reverse!
         p a
         total = a[0].to_s.to_i + a[1].to_s.to_i
         p total
       end
  end
end

max_2_sum(ARGV)

 我這個程序寫得比較粗糙,只是簡單實現了題目的要求,大家有什麼好的想法,歡迎指教。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章