Ruby中数组的中位数不浮动

时间:2014-01-23 06:16:16

标签: ruby arrays median

好的人......我可以使用一些帮助来获取ruby中数组的中位数

这是我的代码:

def median(array)
  array.sort! # sort the array
  elements = array.count # count the elements in the array
  center =  elements/2 # find the center of the array
  elements.even? ? (array[center] + array[center+1])/2 : array[center]  # if elements are even take both the center numbers of array and divide in half, if odd...get the center number
end

不确定应用.to_f的位置,因为它不会返回任何需要浮动的内容。

由于

1 个答案:

答案 0 :(得分:0)

我意识到你已经解决了自己的问题,但这个版本更清洁,更安全:

def median(array)
  raise ArgumentError, 'Cannot find the median on an empty array' if array.size == 0
  sorted = array.sort
  midpoint, remainder = sorted.length.divmod(2)
  if remainder == 0 # even count, average middle two
    sorted[midpoint-1,2].inject(:+) / 2.0
  else
    sorted[midpoint]
  end
end