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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武汉分校-小舞 黑马粉丝团   /  2016-12-9 11:21  /  17776 人查看  /  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 个回复

正序浏览
我又来了
回复 使用道具 举报
谢谢楼主分享,好东西
回复 使用道具 举报
66666666666666666666
回复 使用道具 举报
非常给力!有需要的快来下载!
回复 使用道具 举报
哈哈哈记得啊
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
看下。。。。。。。。。。。。。。。。。
回复 使用道具 举报
还不错哦哦哦哦哦
回复 使用道具 举报
hahahhhhhhhhhhhhhhhh
回复 使用道具 举报
想看看正确答案,想不出来
回复 使用道具 举报
给力  敢进来学习下
回复 使用道具 举报
回复 使用道具 举报
看一看,学一学,顶一顶
回复 使用道具 举报
回复 使用道具 举报
黑马无敌
回复 使用道具 举报
学习一下
回复 使用道具 举报
666666666666666
回复 使用道具 举报
酷酷酷酷酷酷酷酷酷酷
回复 使用道具 举报
cshaptx4869 来自手机 初级黑马 2019-1-3 12:41:42
120#
xuexi 啊啊啊啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马