随机数组值为1到100之间值的数组,数组长度len=1000,求第 n(n<len) 个最大的元素。
示例 :
输入: [33,22,33,15,22,43,51,51,62] 和 n = 4
输出: 43
//备注:排序的时候不去重
/******************************最大数**********/
function max_n()
{
$len = 100;
$array=array_100($len);
$n = 4;
sort_b($array, $n);
}
function array_100($len)
{
$array = [];
for ($i = 0; $i < $len; $i++) {
$array[] = rand(1, 100);
}
return $array;
}
function sort_b($array,$n){
$len=count($array)-1;
for($i=0;$i<$n;$i++){
for($j=$len-$i;$j>0;$j--){
if ($array[$j] > $array[$j - 1]) {
$temp = $array[$j];
$array[$j] = $array[$j -1];
$array[$j - 1] = $temp;
}
}
}
echo $array[$n-1];
}
max_n();
以下方法使用了冒泡算法, 在第一层控制循环的次数 第二层循环数的比较. 因为我们是取第n来控制循环的次数.
网友评论