php一个简单的算法面试题,以及一个思路

有一个文件,里面每一行都是一个url,写一个算法,读取出现最多的五条,及其出现的次数

 

文件是模拟的数组,如果有更好的方法,可以评论哦

<?php
function make_arr()
{
    $urls = array('qwew', 'we2312', 'eewqe', 'r23', 'tewq', 'ey', 'u2', 'ieqw', 'o2', '2p');
    $num = count($urls);
    $arr=array();
    for ($i = 0; $i < 1000; $i++) {
        array_push($arr,"http://www.xxx.com/".$urls[rand(0, $num - 1)]);
    }
    return $arr;
}

$list=make_arr();
function get_result($list, $num)
{
    $sort_arr=array();
    for($i=0;$i<count($list);$i++){
        if(array_key_exists($list[$i],$sort_arr)){
            $sort_arr[$list[$i]]++;
        }else {
            $sort_arr[$list[$i]]=1;
        }
    }
    for ($i = 0; $i < $num; $i++) {
        $keys=array_keys($sort_arr);
        $key = $keys[0];
        foreach ($keys  as $k) {
            if ($sort_arr["$k"] > $sort_arr["$key"]) {
                $key = $k;
            }
        }
        $results["$key"] = $sort_arr["$key"];
        unset($sort_arr["$key"]);
    }
    print_r($results);
}
get_result($list, 5);

 

posted @ 2018-08-23 02:16  cnlh  阅读(393)  评论(0编辑  收藏  举报