此处是用了最小堆 先用100条建立一个最小堆 顶部节点为最小值 每次拿值直接跟顶部比较即可
时间大概用了17s
function createValue(){
for($i=0;$i<100000000;$i++){
$b=rand(0,1000000000);
yield $b;
}
}
function aaa($value,$obj){
$count=$obj->count();
if ($count <= 100) {
$obj->insert($value);
}else{
$top=$obj->top();
if ($top < $value) {
$obj->extract();
$obj->insert($value);
}
}
}
$obj = new SplMinHeap();
$time1=time();
$myValues=(createValue());
foreach ($myValues as $value) {
// echo $value.PHP_EOL;
aaa($value,$obj);
}
while($obj->valid()){
echo $obj->key(),'=>',$obj->current(),PHP_EOL;
$obj->next();
}
$time2=time();
echo '运行时间:'.($time2-$time1), '';