作者:鉴佳熙萍 | 来源:互联网 | 2023-02-01 17:42
我有一个看起来像这样的数组:
let arr = [1,2,3,4,5,6,7,8,9]
我知道你可以得到min
和max
通过:
let min = arr.min()
let max = arr.max()
但你怎么得到中位数?
1> Sweeper..:
中位数定义为序列中间的数字.如果没有一个中间数,则它是两个中间数的平均值.
extension Array where Element == Int {
func median() -> Double {
let sortedArray = sorted()
if count % 2 != 0 {
return Double(sortedArray[count / 2])
} else {
return Double(sortedArray[count / 2] + sortedArray[count / 2 - 1]) / 2.0
}
}
}
2> Rashwan L..:
要获取,median
您可以使用以下方法:
let median = arr.sorted(by: <)[arr.count / 2]
您的情况将返回5
。
正如@Nirav指出的[1,2,3,4,5,6,7,8]
会返回,5
但应该返回4.5
。
使用此代替:
func calculateMedian(array: [Int]) -> Float {
let sorted = array.sorted()
if sorted.count % 2 == 0 {
return Float((sorted[(sorted.count / 2)] + sorted[(sorted.count / 2) - 1])) / 2
} else {
return Float(sorted[(sorted.count - 1) / 2])
}
}
用法:
let array = [1,2,3,4,5,6,7,8]
let m2 = calculateMedian(array: array) // 4.5