PHP常用算法

 1 <?php
 2     //二分法查找数组中的某个元素
 3     function search($array,$k,$low = 0, $high = 0){
 4         if(count($array) != 0 && $high == 0){
 5             $high = count($array);
 6         }
 7         if($low <= $high){
 8             $mid = intval(($low + $high)/2);
 9             if($array[$mid] == $k){
10                 return $mid;
11             }else if($array[$mid] < $k){
12                 return search($array,$k,$low = 0, $mid +1);
13             }else{
14                 return search($array,$k,$low = 0, $mid +1);
15             }
16         }
17         return '你找的元素不存在';
18     }
19     
20     //快速查找数组中的某个元素
21     function search($array,$k){
22         $count = count($array);
23         
24         for($i = 0;$i<= $count;$i++){
25             if($array[$i] == $k){
26                 break;
27             }
28         }
29         
30         if($i < $count) {
31             return $i;
32         }else{
33             return '你找的元素不存在';
34         }
35     }
36     
37     //冒泡法查找数组中的某个元素
38     
39     function search($array) {
40         $count = count($array);
41         
42         for($i = 1;$i<$count;$i++) {
43             for($k = 0;$k<$count-1;$k++){
44                 if($array[$k+1] < $array[$k]);
45                 $tmp = $array[$k+1];
46                 $array[$k+1] = $array[$k];
47                 $array[$k] = $tmp
48             }
49         }
50     }
51     
52     //快速排序法
53     
54     function quick($array){
55         $count = count($array);
56         $base_num = $array[0];
57         $left_num = [];
58         $right_num = [];
59         for($i = 1;$i<$count;$i++){
60             if($array[$i]<$base_num){
61                 $left_num[] = $array[$i];
62             }else{
63                 $right[] = $array[$i];
64             }
65         }
66         $left_num = qucik($left_num);//递归处理
67         $right_num = quick($right_num);//递归处理
68         $array = array_merge($left_num,array($base_num),$right_num);
69         return $array
70     }
71 ?>