美文网首页
第n个最大(15分)

第n个最大(15分)

作者: 幻无虚生 | 来源:发表于2019-05-29 13:20 被阅读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来控制循环的次数.

    相关文章

      网友评论

          本文标题:第n个最大(15分)

          本文链接:https://www.haomeiwen.com/subject/jceetctx.html