题目描述
如何得到一个数据流中的中位数?
如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。
如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
样例
输入:1, 2, 3, 4
输出:1,1.5,2,2.5
解释:每当数据流读入一个数据,就进行一次判断并输出当前的中位数。
golang 代码
var nums []int
func insert(num int) {
var temp = make([]int,len(nums))
_ = copy(temp,nums)
for i := 0 ; i < len(nums) ; i++ {
if num <= nums[i] {
temp = append(temp[:i],num)
nums = append(temp, nums[i:]...)
return
}
}
nums = append(nums,num)
}
func getMedian() float64{
if len(nums) % 2 == 1 {
return float64(nums[len(nums)/2])
}else{
return (float64(nums[len(nums)/2-1])+float64(nums[len(nums)/2]))/2
}
}