PHP数组排序的面试题

去面试的时候,有这样一个题目,编写一个将一维数组按照由大到小排序的函数,不能使用php内涵的排序函数。

当时填写题目的我,写了一个简单的冒泡法:

$a = array(5, 4, 0, 8, 9, 1, 6, 2, 3, 7, 9);
$num = count($a);//计算数组单元数
for($i=0;$i<$num;$i++){
    for($j=$i+1;$j<$num;$j++){
        $b=$a[$i];
        if($a[$i]<$a[$j]){           
            $a[$i]=$a[$j];
            $a[$j]=$b;
        }
    }
}

后来,回来后思考后,就写了现在这个代码:

$a = array(5, 4, 0, 8, 9, 1, 6, 2, 3, 7, 9);
$num = count($a);//计算数组单元数
for ($i = 0; $i < $num; $i++) {
    $b[$i] = max($a);//把数组a最大的数赋值给数组b
    $c = array_search($b[$i], $a);//找出数租a中$b[$i]的key值
    unset($a[$c]);//把$a[$c]从数租a中移走
}
$a=$b;

经过测试,后面那个程序比前面的快很多。不过感觉这个好像不符合面试题目的所需,面试题目明显是想考算法,而第二个程序只是利用了php函数的熟悉度而已。不过我觉得第二个更好理解。

如有更好的建议或意见可留意。

未经允许不得转载:YiEcho博客 » PHP数组排序的面试题

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏