一.快速排序
function quick_sort($arr)
{
if(!is_array($arr)) return false;
$lenth = count($arr);
if( $lenth <= 1 ) return $arr;
$left = $right = array();
for($i=1;$i<$lenth;$i++)
{
if($arr[$i]<$arr[0])
{
$left[] = $arr[$i];
}
else
{
$right[] = $arr[$i];
}
}
$left = quick_sort($left);
$right = quick_sort($right);
return array_merge($left,array($arr[0]),$right);
}
二.冒泡排序
function maopao($arr)
{
if(!is_array($arr)) return false;
$lenth = count($arr);
for($i=0;$i<$lenth;$i++)
{
for($j=1;$j<$lenth-$i;$j++)
{
//每一次循环将排序一个最大的值放在最后
if($arr[$j-1]>$arr[$j])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
}
三.队列是一种线性表,按照先进先出的原则进行,单向队列:只能从头进,从尾出;双向队列:头尾都可以进出
class Deque
{
private $queue=array();
public function addFirst($item)
{
return array_unshift($this->queue,$item);
}
public function addLast($item)
{
return array_push($this->queue,$item);
}
public function removeFirst()
{
return array_shift($this->queue);
}
public function removeLast()
{
return array_pop($this->queue);
}
}
四.有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛
function t($n)
{
static $num = 1;
for($j=1; $j<=$n; $j++)
{
if($j>=4 && $j<15)
{
$num++;
t($n-$j);
}
if($j==20)
{
$num--;
}
}
return $num;
}
五.一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈, 从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止, 那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号
function monkey($m,$n)
{
$arr = [];
for($i=1;$i<=$n;$i++)
{
$arr[] = $i;
}
$i = 0;
while( count($arr)>1 )
{
if( ($i+1)%$m ==0 )
{
unset($arr[$i]);
}
else
{
array_push($arr,$arr[$i]);//把第m只猴子放在最后面
unset($arr[$i]);//删除
}
$i++;
}
return $arr[$i];//返回结果
}
六.查找一个字符串中最长的无重复字串?