44、PHP 实现数据流中的中位数(含源码)

题目: PHP 实现数据流中的中位数

描述:

如何得到一个数据流中的中位数?

如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。

如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。

php 复制代码
<?php

$bigTop = new SplMaxHeap();
$smallTop = new SplMinHeap();
 
function Insert($num)
{
    // write code here
    global $bigTop;
    global $smallTop;
    //保证小顶堆的数 都大于大顶堆的数 其实就是小顶堆的顶 大于大顶堆的顶
    if($smallTop->isEmpty() || $num >= $smallTop->top()){
        $smallTop->insert($num);
    }else{
        $bigTop->insert($num);
    }
    if($smallTop->count() == $bigTop->count() + 2) $bigTop->insert($smallTop->extract());
    if($smallTop->count() + 1 == $bigTop->count()) $smallTop->insert($bigTop->extract());
}
function GetMedian(){
    // write code here
    global $bigTop;
    global $smallTop;
    return $smallTop->count() == $bigTop->count() ? ($smallTop->top() + $bigTop->top())/2 : $smallTop->top();
}
相关推荐
白云LDC5 小时前
Android Studio新建Vecter asset一直显示Loading icons(转圈圈)的解决办法
android·ide·android studio
FYKJ_20105 小时前
springboot校园兼职平台--附源码02041
java·javascript·spring boot·python·eclipse·django·php
Rytter7 小时前
某气骑士 libtprt.so 反 Frida 机制分析与绕过
android·安全·网络安全
alexhilton8 小时前
揭密:Compose应用如何做到启动提升34%
android·kotlin·android jetpack
沐言人生10 小时前
React Native 源码分析1——HybridData 机制深度分析
android·react native
zhangfeng113310 小时前
PHP 语法检查命令 php -l “$file“ > /dev/null 2>&1;
开发语言·php
kybs199110 小时前
springboot视频推荐系统--附源码72953
java·spring boot·python·eclipse·asp.net·php·idea
程序员陆业聪11 小时前
跨平台框架全景图:Flutter/KMP/KuiKly/RN的2026年格局
android
计算机安禾11 小时前
【计算机网络】第6篇:虚拟局域网——基于标签的广播域划分及其安全边界
计算机网络·安全·php
码云数智-园园12 小时前
Fibers(纤程)来了:打破阻塞,实现纯PHP下的异步非阻塞IO
android