PHP面试——基本算法
一、排序
1、冒泡
//冒泡$arr = array(2,4,654,76,43,23,65,786,43,12);
function mySort($arr){
for($i = 0;
$i $arr[$j+1]){
$t = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $t;
}
}
}
return $arr;
}
var_dump(mySort($arr));
2、快排
//快排$arr = array(2,4,654,76,43,23,65,786,43,12);
function mySort($arr){
if(count($arr) <= 1){
return $arr;
}
$left = $right = array();
for($i = 1;
$i $arr[0]){
$right[] = $arr[$i];
}else{
$left[] = $arr[$i];
}
}
$left = mySort($left);
$right = mySort($right);
return array_merge($left,array($arr[0]),$right);
}
var_dump(mySort($arr));
3、插入
//插入
//
$arr = array(2,4,654,76,43,23,65,786,43,12);
function mySort($arr){
for($i = 1;
$i < count($arr);
$i++){
for($j = $i;
$j > 0;
$j--){
if($arr[$j] < $arr[$j-1]){
$t = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $t;
}else{
break;
}
}
}
return $arr;
}
var_dump(mySort($arr));
4、二维数组排序
//二维数组根据指定字段排序(asc) $arr = array(
0=>array('id'=>8,'name'=>'Tom'),
1=>array('id'=>9,'name'=>'Peter'),
2=>array('id'=>5,'name'=>'Jack')
);
function mySort($arr,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC){
$arrs = array();
if(is_array($arr) || is_array($arrs)){
foreach($arr as $key => $value){
$arrs[] = $value[$sort_key];
}
array_multisort($arrs,$sort_order,$sort_type,$arr);
return $arr;
}
}
var_dump(mySort($arr,'id'));
二、查找
1、顺序(必须考虑效率)
//顺序查找$arr = array(1,2,3,4,5,6,7,8,9,12,14,15,16);
function search($arr,$key){
$n = count($arr);
$arr[$n] = $key;
for($i = 0;
$i < $n;
$i++){
if($arr[$i] == $key){
break;
}
}
if($i < $n){
return $i;
}else{
return -1;
}
}
var_dump(search($arr,12));
2、二分
//二分查找$arr = array(1,2,3,4,5,6,7,8,9,12,14,15,16);
$low = 0;
$high = count($arr)-1;
$key = 12;
function search($arr,$low,$high,$key){
while($low <= $high){
$mid = intval(($low+$high)/2);
if($arr[$mid] == $key){
return $mid;
}elseif($arr[$mid] < $key){
$low = $mid +1;
}elseif($arr[$mid] > $key){
$high = $mid -1;
}
}
return -1;
}
var_dump(search($arr,$low,$high,$key));
【PHP面试——基本算法】
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术