2 class hdfSort
3 {
4 public function bubbleSort($arr)
5 {/*{{{*/
6 if (empty($arr) || (1==count($arr)))
7 {
8 return $this->arr;
9 }
10 for ($j=1;$j<count($arr);$j++)
11 {
12 for ($i=0;$i<count($arr)-$j;$i++)
13 {
14 if ($arr[$i]>$arr[$i+1])
15 {
16 $tmp = $arr[$i];
17 $arr[$i] = $arr[$i+1];
18 $arr[$i+1] = $tmp;
19 }
20 }
21 }
22 return $arr;
23 }/*}}}*/
24
25 public function quickSort($arr)
26 {/*{{{*/
27 if (empty($arr) || (1==count($arr)))
28 {
29 return $arr;
30 }
31 $refer = $arr[0];
32 $leftArr = array();
33 $rightArr = array();
34 for ($i=0;$i<count($arr);$i++)
35 {
36 if ($arr[$i] < $refer)
37 {
38 $leftArr[] = $arr[$i];
39 }
40 if ($arr[$i] > $refer)
41 {
42 $rightArr[] = $arr[$i];
43 }
44 }
45 $leftArr = $this->quickSort($leftArr);
46 $rightArr = $this->quickSort($rightArr);
47 return array_merge($leftArr, array($refer), $rightArr);
48 }/*}}}*/
50 public function binary_search($key, $arr)
51 {/*{{{*/
52 if (empty($key)) return "key is empty";
53 if (empty($arr)) return "arr is empty";
54 $min = 0;
55 $max = count($arr)-1;
56 while ($min < $max)
57 {
58 $mid = intval(($min+$max)/2);
59 if ($key == $arr[$mid])
60 {
61 return $key.'--'.$mid;
62 }
63 elseif ($key < $arr[$mid])
64 {
65 $max = $mid -1;
66 }
67 else
68 {
69 $min = $mid + 1;
70 }
71 }
72 return "not found";
73 }/*}}}*/
74
75 public function order_search($target, $arr)
76 {/*{{{*/
77 if (empty($arr)) return "not found";
78 foreach ($arr as $key=>$value)
79 {
80 if ($target == $value)
81 {
82 return "$key"."------"."$value";
83 }
84 }
85 return "not found";
86 }/*}}}*/
87
88 public function select_sort($arr)
89 {/*{{{*/
90 if (empty($arr) || (1==count($arr)))
91 {
92 return $arr;
93 }
94 for ($i = 0; $i < count($arr) -1; $i++){
95 $tmp = $i;
96 $tmpVal = $arr[$i];
97 for ($j = $i +1; $j < count($arr); $j++)
98 {
99 if ($arr[$j]<$tmpVal)
100 {
101 $tmpVal = $arr[$j];
102 $tmp = $j;
103 }
104 }
105 if ($tmp != $i)
106 {
107 $temp = $arr[$i];
108 $arr[$i] = $arr[$tmp];
109 $arr[$tmp] = $temp;
110 }
111 }
112 return $arr;
113 }/*}}}*/
114
115 public function insert_sort($arr)
116 {/*{{{*/
117 if (empty($arr) || (1==count($arr)))
118 {
119 return $arr;
120 }
121 for ($i=1;$i<count($arr);$i++)
122 {
123 $temp = $arr[$i];
124 $j = $i;
125 $tt = $i;
126 while ($j>0)
127 {
128 if ($temp < $arr[$j-1])
129 {
130 $arr[$j] = $arr[$j-1];
131 $tt = $j -1;
132 }
133 $j--;
134 }
135 $arr[$tt] = $temp;
136 }
137 return $arr;
138 }/*}}}*/
139
140 public function cardCacul($card_num = 54)
141 {/*{{{*/
142 $tmp = array();
143 for ($i=0;$i<$card_num;$i++)
144 {
145 $tmp[$i] = $i;
146 }
147 for ($i=0;$i<$card_num;$i++)
148 {
149 $index = rand(0, $card_num-$i-1);
150 $arr[] = $tmp[$index];
151 unset($tmp[$index]);
152 $tmp = array_values($tmp);
153 }
154 return $arr;
155 }/*}}}*/
156
157 }