第n个最大(15分)

2019-05-29  本文已影响0人  幻无虚生

随机数组值为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的大小 我们可以在用n来控制循环的次数.

上一篇下一篇

猜你喜欢

热点阅读