1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $nums = [4,87,2,45,123,65,68,98,9,634]; $k = 2; function getTopK($nums,$k){ for($i = 0;$i < $k;$i++){ $maxIndex = $i; for($j = $i;$j < (count($nums) - $i);$j++){ if($nums[$maxIndex] < $nums[$j]){ $maxIndex = $j; } } $maxNum = array_splice($nums,$maxIndex,1); array_unshift($nums,$maxNum[0]); } return array_slice($nums,0,$k); } var_dump(getTopK($nums,$k));
|