A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武汉分校-小舞 黑马粉丝团   /  2016-12-9 11:21  /  20413 人查看  /  137 人回复  /   8 人收藏 转载请遵从CC协议 禁止商业使用本文

PHP算法面试题目

(本文稿由武汉中心就业部李老师整理)
1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
//冒泡排序(数组排序)
functionbubble_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;
}

//快速排序(数组排序)
functionquick_sort($array) {
if(count($array) <= 1) return $array;
$key =$array[0];
$left_arr =array();
$right_arr =array();
for ($i=1;$i;$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);
returnarray_merge($left_arr, array($key), $right_arr);
}

//2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组//二分查找(数组里查找某个元素)
functionbin_sch($array, $low, $high, $k){
if ($low <=$high){
$mid =intval(($low+$high)/2);
if ($array[$mid]== $k){
return $mid;
}elseif ($k <$array[$mid]){
returnbin_sch($array, $low, $mid-1, $k);
}else{
returnbin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}

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

functionseq_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是降序

functionarray_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($keysvalueas $key => $vals) {
$keysort[$key] =$key;
}
$new_array =array();
foreach($keysortas $key => $val) {
$new_array[$key]= $arr[$val];
}
return$new_array;
}
猴子选大王问题描述:
一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。
要求编程模拟此过程,输入m、n,输出最后那个大王的编号。
解题思路:
见附件

游客,如果您要查看本帖隐藏内容请回复

137 个回复

倒序浏览
holy high
回复 使用道具 举报
非常给力!有需要的快来下载!
回复 使用道具 举报
See see see
回复 使用道具 举报
Seeaseesee
回复 使用道具 举报
看看答案~
回复 使用道具 举报
heim123 初级黑马 2016-12-21 11:00:17
7#
see 看见啦see 看见啦
回复 使用道具 举报
jun-23 初级黑马 2016-12-21 11:48:33
8#
谢谢分享
回复 使用道具 举报
恳求资源,,,感谢,,想要学习
回复 使用道具 举报
1,2,...,n依次编号。然后从第1只开始
回复 使用道具 举报
1,2,...,n依次编号。然后从第1只开始
回复 使用道具 举报
1,2,...,n依次编号。然后从第1只开始
回复 使用道具 举报
ylb 初级黑马 2017-2-28 14:15:18
13#
发生大法师
回复 使用道具 举报

非常给力!有需要的快来下载!
回复 使用道具 举报
44444444444444444444444444
回复 使用道具 举报
dsfadfdddf
回复 使用道具 举报
回复 使用道具 举报
好贴,顶顶顶!!!!!!!!!!!!!!
回复 使用道具 举报
回复 使用道具 举报
看看,是什么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马