1、 $a0) $l = $a$i; $r = $a$i; $l = kuaisu($l); $r = kuaisu($r); return array_merge($l,array($a0),$r);/插入排序 O(N*N)function charu($a) for($i=1; $t = $a$i; for($j=$i;$j0 & $a$j-1$t;$j-) $a$j = $a$j-1; $a$j = $t;/选择排序O(N*N)function xuanze($a) for($i=0; for ($j=$i+1;$j$a$j) $t = $a$j; $a$j = $a$i; $a$i = $
2、t;/冒泡排序 O(N*N)function maopao($a) for ($j=$c-1;$i; if($a$j $a$j-1) $t = $a$j-1; $a$j-1 = $a$j;复制代码 代码如下:/* * 排列组合 * 采用二进制方法进行组合的选择,如表示5选3时,只需有3位为1就可以了,所以可得到的组合是 01101 11100 00111 10011 01110等10种组合 * * param 需要排列的数组 $arr * param 最小个数 $min_size * return 满足条件的新数组组合 */function plzh($arr,$size=5) $len =
3、count($arr); $max = pow(2,$len); $min = pow(2,$size)-1; $r_arr = array(); for ($i=$min; $i$max; $i+) $count = 0; $t_arr = array(); for ($j=0; $j杂文,2=小说,3=散文);/新分类$a2=array(3=散文,4=诗歌,6=文学foreach($a1 as $k = $v)$have=”;foreach($a2 as $ks = $vs)echo “$v=$vs.”;if($v=$vs)$have=1;if(!array_key_exists($ks,
4、$a1)$add$ks=$vs;if($have)$bao$k=$v;else$del$k=$v;var_dump($add);/新增的记录var_dump($del);/删除的记录var_dump($bao);/保留的记录方式二:无key$a1=array(杂文,小说,散文);$a2=array(散文,诗歌,文学);in_array($vs, $a1)$add$vs=$vs;$bao=$v;$del=$v;- 比较全的随机数(字)class getRandstrClassfunction getCode ($length = 32, $mode = 0) switch ($mode) cas
5、e 1:$str = 1234567890;break;case 2:$str = abcdefghijklmnopqrstuvwxyz;case 3:$str = ABCDEFGHIJKLMNOPQRSTUVWXYZ;case 4:$str = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;case 5:$str = ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890;case 6:$str = abcdefghijklmnopqrstuvwxyz1234567890;default:$str = ABCDEF
6、GHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890;$randString = ”;$len = strlen($str)-1;for($i = 0;$i getCode($length, $mode);echo $str;$code = NULL;有两个数值型变量 $a ,$b ,请在不使用用第二个变量的情况下交换它们的值$a=3;$b=4;$a=$a+$b;$b=$a-$b;$a=$a-$b;/list($b, $a) = array($a, $b);【选择排序(一维数组)】【基本思想】:每一趟从待排序的数据元素中选出最小(或最
7、大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。【示例】:初始关键字 49 38 65 97 76 13 27 49第一趟排序后 13 38 65 97 76 49 27 49第二趟排序后 13 27 65 97 76 49 38 49第三趟排序后 13 27 38 97 76 49 65 49第四趟排序后 13 27 38 49 49 97 65 76第五趟排序后 13 27 38 49 49 97 97 76第六趟排序后 13 27 38 49 49 76 76 97第七趟排序后 13 27 38 49 49 76 76 97最后排序结果 13 27 38 49
8、 49 76 76 97function select_sort($arr)$count = count($arr);for($i=0;$count;$k = $i;for($j=$i+1;if ($arr$k $arr$j)$k = $j;/最小元素k和i调换if($k != $i)$tmp = $arr$i;$arr$i = $arr$k;$arr$k = $tmp;return $arr;【插入排序(一维数组)】每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。初始关键字 49 38 65 97 76 13 27 49J
9、=2(38) 38 49 65 97 76 13 27 49J=3(65) 38 49 65 97 76 13 27 49J=4(97) 38 49 65 97 76 13 27 49J=5(76) 38 49 65 76 97 13 27 49J=6(13) 13 38 49 65 76 97 27 49J=7(27) 13 27 38 49 65 76 97 49J=8(49) 13 27 38 49 49 65 76 97function insert_sort($arr)for($i=1;$j = $i - 1;while($arr$j $tmp)$arr$j+1 = $arr$j;$
10、arr$j = $tmp;$j;冒泡排序(一维数组)两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。【排序过程】:设想被排序的数组R1.N垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上”漂浮” ,如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。function bubble_sort($array)$count = count($array);if ($count $j)if ($array$j move(3,$fromPlace,$toPla
11、ce,$assistancePlace);print_r($objMover-getMovedMessage();class Moverprotected $_tabMessage = array();public function _construct()* Enter description here* param unknown_type $N, the larger the number is, the heavier it is* param unknown_type $fromPlace* param unknown_type $toPlace* param unknown_typ
12、e $assistancePlacepublic function move($N,$fromPlace,$toPlace,$assistancePlace)if($N = 1)$this-_tabMessage = “Move $N from $fromPlace to $toPlace”;elseif($N 1)move($N-1),$fromPlace,$assistancePlace,$toPlace);move($N-1),$assistancePlace,$toPlace,$fromPlace);public function getMovedMessage()return $th
13、is-_tabMessage;function hanoi($n,$x,$y,$z)if($n=1)move($x,1,$z);elsehanoi($n-1,$x,$z,$y);move($x,$n,$z);hanoi($n-1,$y,$x,$z);function move($x,$n,$z)echo move disk .$n. from .$x. to .$z.;hanoi(10,x,y,z?-猴子大王游戏一群猴子排成一圈,按1,2,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴
14、子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。结果视图:z=0/i=0z=1/i=1z=2/i=2z=3/i=3Array ( 0 = 1 1 = 2 2 = 3 3 = 5 4 = 6 )z=0/i=3z=1/i=4z=2/i=0z=3/i=1 3 2 = 5 3 =z=0/i=1z=1/i=2z=2/i=3z=3/i=0 3 1 = 5 2 = 5 1 = 5 )King is:5function monkeyKing($n,$m)$monkeys=range(1,$n);$i=0;/取出时候的坐标$z=0;/数到M的时候停while($mnum=count($m
15、onkeys)1)if($i=$mnum)echo z=.$z./i=.$i.$z+;$i+;if($z=$m)array_splice($monkeys,$i,1);print_r($monkeys);echo “;return($monkeys0);echo King is:.monkeyKing(20,4);-翻牌游戏1-52张扑克牌,初始都翻开朝上从2开始,以倍数为基础,将2翻一次,4翻一次,6翻一次。52翻一次从3开始,以倍数为基础,将3翻一次,6翻一次,9翻一次。48翻一次从4开始,以倍数为基础,将4翻一次,8翻一次,13翻一次。.求最后朝上的牌有哪些?* Created on 2
16、009-9-30* To change the template for this generated file go to* Window - Preferences - PHPeclipse - PHP - Code Templatesclass upprotected $max = 52;protected $min = 2;protected $rs = array(1);/结果集,第一张牌是朝上的function up()/* 循环得到2-52的整除数组* Array(2 = Array0 = 2)3 = 34 =1 = 45 = 56 = 67 = 78 = 89 = 910 = 1011 = 1112 = 1213 = 1314 = 1415 = 1516 = 1617 = 1718 = 1819 = 1920 = 2021 = 2122 = 2223 = 2324 = 2425 = 2526 = 2627 =2