class MaxHeap extends SplHeap{ public function compare($value1, $value2) { return ($value1 - $value2); } public function GetKMinNum($arr, $k){ if(is_array($arr) && $k > 0){ $count = count($arr); for($i=0; $i<$count; $i++){ if($i < $k){ $this->insert($arr[$i]); }else{ $top = $this->top(); if($top > $arr[$i]){ $this->extract(); $this->insert($arr[$i]); } } } } return $this; } }
$heap = new MaxHeap(); $arr = array(); for($i=0; $i<100000; $i++){ $arr[] = rand(100, 1000000); } $min = $heap->GetKMinNum($arr, 7); foreach($min as $val){ echo $val . '<br/>'; }
以上就介紹了PHP 利用SPL標準函式庫取得陣列中最小的K個值,包含了方面的內容,希望對PHP教學有興趣的朋友有所幫助。