查找浮点数数组的中位数

时间:2017-06-05 16:59:15

标签: groovy

我已经看过这里的所有例子,没有什么能回答我的问题。我对Groovy很新。

我想创建类似列表或浮点数的数组,价格如239.99。

然后我想将该数组或列表传递给一个方法,该方法将确定该数组或数字列表中的中位数价格。总大小会有所不同。

有没有快速简便的代码可以做到这一点?如何将每个数字添加到数组或列表中,我必须使用双打?

感谢任何帮助,这个让我感到困惑和沮丧。

谢谢!

1 个答案:

答案 0 :(得分:1)

以下函数确定非空列表的median

def median(data) {
    def copy = data.toSorted()
    def middle = data.size().intdiv(2)

    // you can omit the return in groovy for the last statement
    data.size() % 2 ? copy[middle] : (copy[middle - 1] + copy[middle]) / 2
}

适用于支持添加和分割的所有类型。

例如:

assert median([1, 7, 4, 3]) == 3.5
assert median([1, 7, 4]) == 4
assert median([1, 7]) == 4
assert median([1]) == 1
assert median([1.7, 3.4, 10.9, 4.2]) == 3.8

就使用列表可以执行的操作而言,请检查Lists overview,然后选择List API