PHP常见的算法题
作者: 何忠利 • 发表于 2017-07-14
猴子选大王问题
<?php
/**
* 猴子选大王问题
*
* @param $m; // 一共多少只猴子
* @param $n; // 基数为n的时候踢出猴子
* @return $arr; //为猴子大王的编号
*/
function king($m,$n){
for($i = 1;$i < $m + 1;$i++){
$arr[] = $i;
}
$i = 0;
while(count($arr) > 1){
if(($i + 1) % $n == 0){
unset($arr[$i]);
}else{
array_push($arr,$arr[$i]);
unset($arr[$i]);
}
$i++;
}
return $arr;
}
快速排序
<?php
/**
* 快速排序
*
* @param $arr
* @return $arr
*/
function kuaisu($arr){
if(count($arr) <= 1) return $arr;
$l_arr = $r_arr = array();
for($i =1;$i < count($arr);$i++){
if($arr[$i] < $arr[0]){ // 这里控制排序方向 < >
$l_arr[] = $arr[$i];
}else{
$r_arr[] = $arr[$i];
}
}
$l_arr = kuaisu($l_arr);
$r_arr = kuaisu($r_arr);
return array_merge($l_arr,array($arr[0]),$r_arr);
}
冒泡排序
<?php
/**
* 冒泡排序
*
* @param $array
* @return $array
*/
function maopao($arr){
$count = count($arr);
for($i=0;$i<$count;$i++){
for($j=$i+1;$j<$count;$j++){
if($arr[$i] < $arr[$j]){ // 这里控制排序方向 < >
$tmp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $tmp;
}
}
}
return $arr;
}
文章关键词:
# 面试题
# 算法
阅读量:
999
返回主页