设为首页 加入收藏

TOP

PHP算法面试题
2014-11-23 23:32:00 来源: 作者: 【 】 浏览:5
Tags:PHP 算法 试题

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组


2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组


3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数


【附答案】(以下答案不一定是最好的,只是一个简单的参考)


一、基础题


1. 相等 相等 不相等


2. true true true true true false true false


3. aaaaaa


4. 5 0 1


5. 5 2


6. 1 2


7. 使用五种以上方式获取一个文件的扩展名


function get_ext1($file_name){


return strrchr($file_name, ‘.’);


}


function get_ext2($file_name){


return substr($file_name, strrpos($file_name, ‘.’));


}


function get_ext3($file_name){


return array_pop(explode(‘.’, $file_name));


}


function get_ext4($file_name){


$p = pathinfo($file_name);


return $p['extension'];


}


function get_ext5($file_name){


return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));


}


二、算法题


1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组


//冒泡排序(数组排序)


function bubble_sort($array)


{


$count = count($array);


if ($count <= 0) return false;


for($i=0; $i<$count; $i++){


for($j=$count-1; $j>$i; $j–){


if ($array[$j] < $array[$j-1]){


$tmp = $array[$j];


$array[$j] = $array[$j-1];


$array[$j-1] = $tmp;


}


}


}


return $array;


}


//快速排序(数组排序)


function quick_sort($array) {


if (count($array) <= 1) return $array;


$key = $array[0];


$left_arr = array();


$right_arr = array();


for ($i=1; $i


if ($array[$i] <= $key)


$left_arr[] = $array[$i];


else


$right_arr[] = $array[$i];


}


$left_arr = quick_sort($left_arr);


$right_arr = quick_sort($right_arr);


return array_merge($left_arr, array($key), $right_arr);


}


2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组


//二分查找(数组里查找某个元素)


function bin_sch($array, $low, $high, $k){


if ($low <= $high){


$mid = intval(($low+$high)/2);


if ($array[$mid] == $k){


return $mid;


}elseif ($k < $array[$mid]){


return bin_sch($array, $low, $mid-1, $k);


}else{


return bin_sch($array, $mid+1, $high, $k);


}


}


return -1;


}


//顺序查找(数组里查找某个元素)


function seq_sch($array, $n, $k){


$array[$n] = $k;


for($i=0; $i<$n; $i++){


if($array[$i]==$k){


break;


}


}


if ($i<$n){


return $i;


}else{


return -1;


}


}


3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数


//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序


function array_sort($arr, $keys, $order=0) {


if (!is_array($arr)) {


return false;


}


$keysvalue = array();


foreach($arr as $key => $val) {


$keysvalue[$key] = $val[$keys];


}


if($order == 0){


asort($keysvalue);


}else {


arsort($keysvalue);


}


reset($keysvalue);


foreach($keysvalue as $key => $vals) {


$keysort[$key] = $key;


}


$new_array = array();


foreach($keysort as $key => $val) {


$new_array[$key] = $arr[$val];


}


return $new_array;


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇这俩月的酱油面试经历,浅谈,浅谈 .. 下一篇Linux文件系统类型都有什么?

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: