1、冒泡排序(从小到大)
public function test() { $arr =array('1','12','9','7','3','15','46','2'); $num = count($arr); for($i=0;$i<$num;$i++) { for($j=1;$j<$num-$i;$j++) { if($arr[$j]>$arr[$j+1]) { $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } var_dump($arr); }
2、快速排序
public function test($arr) { $num = count($arr); if($num<2) { return $arr; } $key = $arr[0]; for($i=2;$i<$num;$i++) { if($arr[$i] > $key) { $r_arr[] = $arr[$i]; } else { $l_arr[] = $arr[$i]; } } #别忘记递归调用 $l_arr = test($l_arr); $l_arr[] =$key; $r_arr = test($r_arr); $arr1 = array_merge($l_arr, $r_arr); return $arr1; }
2、一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。(新浪)(小米)
public function test($m, $n) { $arr = range(1, $n);//创建数组 $num = count($arr); $i = 0; while($num<1) { ++$i;//同等于$i +=1; $head = array_shify($arr);#获取数组中第一个数值 if($i%$m!=0) { array_push($arr, $head); } } return $arr[0]; }