php面试题之算法篇

这是真实的IT公司招聘php程序员的php面试题,考的都是算法的知识,说实话,这些都是简单的基本算法!

下面的php面试题均附答案,请自行斟酌!

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

 

  1. //对数组冒泡排序
  2. function bubble_sort($array){
  3. $count = count($array);
  4. if ($count <= 0)
  5. return false;
  6. for($i=0; $i<$count; $i++){
  7. for($j=$count1; $j>$i; $j–){
  8. if ($array[$j] < $array[$j1]){
  9. $tmp = $array[$j];
  10. $array[$j] = $array[$j1];
  11. $array[$j1] = $tmp;
  12. }
  13. }
  14. }
  15. return $array;
  16. }

 

  1. function quick_sort($array) {
  2. if (count($array) <= 1) return $array;
  3. $key = $array[0];
  4. $left_arr = array();
  5. $right_arr = array();
  6. for ($i=1; $i<count($array); $i++){
  7.  
  8. if ($array[$i] <= $key)
  9.  
  10. $left_arr[] = $array[$i];
  11. else
  12. $right_arr[] = $array[$i];
  13. }
  14. $left_arr = quick_sort($left_arr);
  15. $right_arr = quick_sort($right_arr);
  16. return array_merge($left_arr, array($key), $right_arr);
  17. }

 

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

 

  1. //使用二分查找数组中某个元素
  2. function bin_sch($array, $low, $high, $k){
  3. if ($low <= $high){
  4. $mid = intval(($low+$high)/2);
  5. if ($array[$mid] == $k){
  6. return $mid;
  7. }elseif ($k < $array[$mid]){
  8. return bin_sch($array, $low, $mid1, $k);
  9. }else{
  10. return bin_sch($array, $mid+1, $high, $k);
  11. }
  12. }
  13. return 1;
  14. }

 

  1. //顺序查找数组中某个元素
  2. function seq_sch($array, $n, $k){
  3. $array[$n] = $k;
  4. for($i=0; $i<$n; $i++){
  5. if($array[$i]==$k){
  6. break;
  7. }
  8. }
  9. if ($i<$n){
  10. return $i;
  11. }else{
  12. return 1;
  13. }
  14. }

 

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

 

  1. function array_sort($arr, $keys, $order=0) {
  2. if (!is_array($arr)) {
  3. return false;
  4. }
  5. $keysvalue = array();
  6. foreach($arr as $key => $val) {
  7. $keysvalue[$key] = $val[$keys];
  8. }
  9. if($order == 0){
  10. asort($keysvalue);
  11. }else {
  12. arsort($keysvalue);
  13. }
  14. reset($keysvalue);
  15. foreach($keysvalue as $key => $vals) {
  16. $keysort[$key] = $key;
  17. }
  18. $new_array = array();
  19. foreach($keysort as $key => $val) {
  20. $new_array[$key] = $arr[$val];
  21. }
  22. return $new_array;
  23. }

 

上面这些php面试题都是关于算法的,也是通过本人在网络搜集的,有更好的解决方案可留言给我!

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?