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();
}
相关推荐
MinQ7 分钟前
binder和socket区别及原理
android
Ehtan_Zheng36 分钟前
Jetpack Compose 中绘制发光边框的多种方式
android
智塑未来37 分钟前
像素蛋糕安卓版 AI 专业修图全场景输出高清成片
android·人工智能
陆业聪2 小时前
让 Android 里的 AI 真正「干活」:Function Calling 工程实现全解
android·ai·kotlin
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于Android的服装搭配APP为例,包含答辩的问题和答案
android
三七吃山漆3 小时前
[红明谷CTF 2021]write_shell
php·ctf·[红明谷ctf 2021]
qq_717410013 小时前
Add Baidu NLP for projects without GMS packages
android
AI-小柒3 小时前
DataEyes 聚合平台 + Claude Code Max 编程实战
android·开发语言·人工智能·windows·python·macos·adb
优选资源分享4 小时前
椒盐音乐 v11.1.0 丨安卓无广本地音乐播放器
android
ZHOUPUYU4 小时前
PHP与WebSocket实时通信的原理到生产级应用
开发语言·html·php