PHP面试题之算法解析,php试题解析
面试中经常被问到会什么算法,这里整合一些常见的算法及它们的实现原理.下面的例子都是经过测试可用的,如果有什么问题请告知!!
本人小白,如果有更好的实现方式,敬请赐教,感激不尽!!!!
冒泡排序,快速排序,选择排序,二分法查找,快速查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <span>
<span> function bubbleSort<span>(</span><span> $array <span>)
{
<span> $cnt = <span> count <span>(</span><span> $array <span>);
<span> for (<span> $i = 0; <span> $i < <span> $cnt ; <span> $i ++<span>){
<span> for (<span> $j = 0 ; <span> $j < (<span> $cnt -<span> $i -1) ; <span> $j ++<span>){
<span> if (<span> $array [<span> $j ] > <span> $array [<span> $j +1<span>]){
<span> $temp = <span> $array [<span> $j <span>];
<span> $array [<span> $j ] = <span> $array [<span> $j +1<span>];
<span> $array [<span> $j +1] = <span> $temp <span>;
}
}
}
<span> return <span> $array <span>;
}<br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <span>
</span>
<span> function </span> quickSort(<span> $array </span><span>)
{
</span><span> if </span>(<span> count </span>(<span> $array </span>) <= 1 ) <span> return </span> <span> $array </span><span>;
</span><span> $key </span> = <span> $array </span>[0<span>];
</span><span> $left_arr </span> = <span> array </span><span>();
</span><span> $right_arr </span> = <span> array </span><span>();
</span><span> for </span> (<span> $i </span>=1;<span> $i </span><<span> count </span>(<span> $array </span>);<span> $i </span>++<span>){
</span><span> if </span>(<span> $array </span>[<span> $i </span>] <= <span> $key </span><span>){
</span><span> $left_arr </span>[] = <span> $array </span>[<span> $i </span><span>];
}</span><span> else </span><span>{
</span><span> $right_arr </span>[] = <span> $array </span>[<span> $i </span><span>];
}
}
</span><span> $left_arr </span> = quickSort(<span> $left_arr </span><span>);
</span><span> $right_arr </span> = quickSort(<span> $right_arr </span><span>);
</span><span> return </span> <span> array_merge </span>(<span> $left_arr </span>,<span> array </span>(<span> $key </span>),<span> $right_arr </span><span>);
}</span>
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <span>
</span>
<span> function </span> selectSort(<span> $array </span><span>){
</span><span> $cnt </span> = <span> count </span>(<span> $array </span><span>);
</span><span> for </span>(<span> $i </span>=0;<span> $i </span><<span> $cnt </span>;<span> $i </span>++<span>){
</span><span> for </span>(<span> $j </span>=(<span> $i </span>+1);<span> $j </span><<span> $cnt </span>;<span> $j </span>++<span>){
</span><span> if </span>(<span> $array </span>[<span> $i </span>]><span> $array </span>[<span> $j </span><span>]){
</span><span> $tmp </span> = <span> $array </span>[<span> $i </span><span>];
</span><span> $array </span>[<span> $i </span>] = <span> $array </span>[<span> $j </span><span>];
</span><span> $array </span>[<span> $j </span>] = <span> $tmp </span><span>;
}
}
}
</span><span> return </span> <span> $array </span><span>;
}</span>
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <span>
</span>
<span> function </span> binarySearch(<span> $array </span>,<span> $val </span><span>)
{
</span><span> $cnt </span> = <span> count </span>(<span> $array </span><span>);
</span><span> $low </span> = 0<span>;
</span><span> $high </span> = <span> $cnt </span> - 1<span>;
</span><span> while </span> (<span> $low </span> <= <span> $high </span><span>){
</span><span> $mid </span> = <span> intval </span>((<span> $low </span> + <span> $high </span>)/2<span>);
</span><span> if </span>(<span> $array </span>[<span> $mid </span>] == <span> $val </span><span>){
</span><span> return </span> <span> $mid </span><span>;
}
</span><span> if </span>(<span> $array [ $mid ]</span> < <span> $val </span><span>){
</span><span> $low </span> = <span> $mid </span> + 1<span>;
}
</span><span> if </span>(<span> $array [ $mid ]</span> > <span> $val </span><span>){
</span><span> $high </span> = <span> $mid </span> - 1<span>;
}
}
</span><span> return </span> -1<span>;
}</span>
|
登入後複製
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <span>
</span>
<span> function </span> seqSch(<span> $array </span>,<span> $val </span><span>)
{
</span><span> for </span>(<span> $i </span>=0;<span> $i </span><<span> count </span>(<span> $array </span>);<span> $i </span>++<span>){
</span><span> if </span>(<span> $array </span>[<span> $i </span>] == <span> $val </span><span>)
</span><span> break </span><span>;
}
</span><span> if </span>(<span> $i </span> < <span> count </span>(<span> $array </span><span>)){
</span><span> return </span> <span> $i </span><span>;
}</span><span> else </span><span>{
</span><span> return </span> -1<span>;
}
}</span>
|
登入後複製
http://www.bkjia.com/PHPjc/1059464.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1059464.htmlTechArticlePHP面试题之算法解析,php试题解析 面试中经常被问到会什么算法,这里整合一些常见的算法及它们的实现原理.下面的例子都是经过测试可用...