php经典算法合集

本文介绍了PHP的几种经典算法,供大家参考,如下:

有5人偷了一堆苹果,准备抢在第二天。晚上,一个人走了,所有的蔬菜和水果为5,但不止一个,很容易把这树上的猴子,以1 / 5的财产。我没想到其他四人这样想,作为第一个人,像5,把一个猴子偷走了1 / 5.the的第二天,我们分为5个部分一扔猴子。最后一分。问:有多少个苹果


($ i = 1;;$ + +)
{
如果($ i = 5 = 1){
第一人称5/1
美元= I圆($ i 5)- 1;
如果($ = 5 = 1)
{
第二人5,1美元
$ r = t圆($ 5)- 1;
如果($ r = 5 = 1)
{
第三人1美元/ 5美元
美元= R圆($ 5)- 1;
如果($ 5 = 1)
{
第四人,1美元/ 5美元,含X美元
$ x = s圆($ 5)- 1;
如果($ x 5 = = 1)
{
第五人1美元/ 5美元
$ = $ x圆($ 5)- 1;
如果($ y = 5 = 1){
回声$ i;
打破;
}
}
}
}
}
}
}




在一个圆圈,猴子1, 2个一组,轮流…N编号。然后,从第一个开始数,数到m只,把它踢出圈,从后面开始数,只数到m,踢出来。猴子被称为国王直到最后一只猴子在年底离开。它需要编程来模拟这一过程,输入m,n,输出王的最后一个号码。


函数王($ n,m){
$猴子=范围(1,n);
$ I = 0;
美元= N美元;
同时(计数(猴子$)> 1){
如果(($ i + 1)% $ m = 0){
撤消($猴{我});
{人}
array_push($猴子,猴子我} {美元美元);
撤消($猴{我});
}
美元+;
}
返回电流(猴子);
}
$ =国王(5, 2);
var_dump(美元);




河内(又称河内塔)是印度的一个古老的传说,上帝创造世界的三钻石棒博拉多左一寺,第一套64以上的黄金圆,一个在底部最大,比一个小,堆积,寺中僧人不懈把他们从一个又一个的坚持另一个贴在规定可以使用酒吧的帮助中,但你只能移动一个,并没有对小高层。回答的结果,请运行计算,尾看节目。在大量的脸(移动18446744073709551615,数片)似乎把所有的和尚一生无法完成的金币。

后来,传说中的河内塔游戏演变:

1。有三根杆子A、B、C。

2。每次搬盘子,小盘子只能堆在大盘子上。

三.把所有的盘子从杆移到C杆上。

结果表明,河内断裂塔结构简单,符合单方向移动的规律:

如3阶汉诺塔的移动:一个C,A,B,C,B,A,C,B,A,B,C,A,C

另外,河内问题经典塔是程序设计中的递归问题。


函数河内($ n,$ x,y,z){
如果($ = 1){
echo'move盘1美元。x.'to'。$ Z ;
其他{ }
河内(n-1美元,x,Z,Y);
echo'move磁盘。n.'from美元,美元。'到'。$ Z ;
河内($ n-1,y,x,Z);
}
}
河内(3,A,B,C);




用PHP描述冒泡排序和快速排序算法,对象可以是数组。


对数组/气泡进行排序
功能bubble_sort($array){
计数=(数组);
如果(0美元)
返回false;
($ i = 0;$ i <计数;$ + +){
为(J = $ count-1;J > $我;J u2013){
如果(数组$ { $ J } <数组$ { $ J-1 }){
$ = $数组{ $ };
数组$ { $ J } =数组{ $ J-1 };
数组$ { $ J-1 } = $ TMP;
}
}
}
返回数组;
}
功能quick_sort($array){
如果(计数(数组)< = 1)返回数组;
$ = $数组{ 0 };
left_arr美元=阵();
right_arr美元=阵();
对于($ i = 1;$ i <计数(数组);$ + +){
如果($ $)
left_arr美元{ } =数组{ $我};
其他的
right_arr美元{ } =数组{ $我};
}
left_arr = quick_sort美元(美元left_arr);
right_arr = quick_sort美元(美元right_arr);
返回array_merge($ left_arr,阵列($键),right_arr美元);
}




使用PHP描述序列查找和两个点查找算法,顺序查找必须考虑效率,对象可以是有序数组。


使用搜索数组元素
功能bin_sch($array美元美元,低,高,$K){
如果(低$高){
中intval美元=(($美元低+高) / 2);
如果($ $)
返回$中;
} elseif($ K <数组$ { $中}){
返回bin_sch($array,低美元,中叶1美元,$ K);
其他{ }
返回bin_sch($array中+ 1美元,美元,美元高,K);
}
}
返回- 1;
}


编写一个二维数组排序算法的函数,可以调用php内置函数,可以是多功能的。


功能array_sort($ ARR,钥匙为0美元美元,=){
如果(!is_array($ ARR)){
返回false;
}
keysvalue美元=阵();
foreach(ARR美元美元美元关键= val){
keysvalue { } =美元美元美元美元价值的关键钥匙} {;
}
如果($ = 0){
Asort(keysvalue美元);
{ }人
Arsort(keysvalue美元);
}
复位($ keysvalue);
foreach(keysvalue美元美元美元关键= VAL){
键控分类{ } =美元美元美元的关键的关键;
}
new_array美元=阵();
foreach(美元美元美元键控分类键=值){
new_array美元美元美元关键} = { ARR { $瓦尔};
}
返回的new_array;
}


希望本文能对PHP程序设计有所帮助。