//递归查询分类
private function get_attr($a,$pid){
$tree = array();
foreach($a as $v){
if($v['pid'] == $pid){
$v['children'] = $this->get_attr($a,$v['id']);
if($v['children'] == null){
unset($v['children']);
}
$tree[] = $v;
}
}
return $tree;
}
//快速排序
function quickSort($arr) {
//先判断是否需要继续进行
$length = count($arr);
if($length <= 1) {
return $arr;
}
//选择第一个元素作为基准
$base_num = $arr[0];
//遍历除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$left_array = array(); //小于基准的
$right_array = array(); //大于基准的
for($i=1; $i<$length; $i++) {
if($base_num > $arr[$i]) {
//放入左边数组
$left_array[] = $arr[$i];
} else {
//放入右边
$right_array[] = $arr[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
//合并
return array_merge($left_array, array($base_num), $right_array);
}
//冒泡
function bubbleSort($numbers) {
$cnt = count($numbers);
for ($i = 0; $i < $cnt - 1; $i++) {
for ($j = 0; $j < $cnt - $i - 1; $j++) {
if ($numbers[$j] > $numbers[$j + 1]) {
$temp = $numbers[$j];
$numbers[$j] = $numbers[$j + 1];
$numbers[$j + 1] = $temp;
}
}
}
return $numbers;
}
$num = array(20, 40, 60, 80, 30, 70, 90, 10, 50, 0);
var_dump(bubbleSort($num));
//输出结果如下:
//array(10) {
// [0]=>
// int(0)
// [1]=>
// int(10)
// [2]=>
// int(20)
// [3]=>
// int(30)
// [4]=>
// int(40)
// [5]=>
// int(50)
// [6]=>
// int(60)
// [7]=>
// int(70)
// [8]=>
// int(80)
// [9]=>
// int(90)
//}
//二分查找算法
function binsearch($x,$a){
$c=count($a);
$lower=0;
$high=$c-1;
while($lower<=$high){
$middle=intval(($lower+$high)/2);
if($a[$middle]>$x){
$high=$middle-1;
} elseif($a[$middle]<$x){
$lower=$middle+1;
} else{
return $middle;
}
}
return false;
}
//奇异
function test(){
$a=1;
$b=&$a;
echo (++$a)+(++$a);
}
test();
递归 快速 冒泡 奇异
最新推荐文章于 2024-07-13 18:41:46 发布