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函数的熟悉度而已。不过我觉得第二个更好理解。

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

网友评论1

  1. 沙发
    缘来是石石石:

    大神多搞点面试题呀! 求大神带飞啊!

    2016-07-12 16:49 [回复]

发表评论

表情
还能输入210个字