1 <? 
  2 //-------------------- 
  3 // 基本数据结构算法
  4 //-------------------- 
  5 
  6 //二分查找(数组里查找某个元素) 
  7 function bin_sch($array, $low, $high, $k){  
  8     if ($low <= $high){  
  9         $mid = intval(($low+$high)/2);  
 10         if ($array[$mid] == $k){  
 11             return $mid;  
 12         }elseif ($k < $array[$mid]){  
 13             return bin_sch($array, $low, $mid-1, $k);  
 14         }else{  
 15             return bin_sch($array, $mid+1, $high, $k);  
 16         }  
 17     }  
 18     return -1;  
 19 }  
 20 
 21 //顺序查找(数组里查找某个元素) 
 22 function seq_sch($array, $n, $k){  
 23     $array[$n] = $k;  
 24     for($i=0; $i<$n; $i++){  
 25         if($array[$i]==$k){  
 26             break;  
 27         }  
 28     }  
 29     if ($i<$n){  
 30         return $i;  
 31     }else{  
 32         return -1;  
 33     }  
 34 }  
 35 
 36 //线性表的删除(数组中实现) 
 37 function delete_array_element($array, $i) 
 38 { 
 39         $len = count($array);  
 40         for ($j=$i; $j<$len; $j++){ 
 41                 $array[$j] = $array[$j+1]; 
 42         } 
 43         array_pop($array); 
 44         return $array; 
 45 } 
 46 
 47 //冒泡排序(数组排序) 
 48 function bubble_sort($array) 
 49 { 
 50         $count = count($array); 
 51         if ($count <= 0) return false; 
 52 
 53         for($i=0; $i<$count; $i++){ 
 54                 for($j=$count-1; $j>$i; $j--){ 
 55                         if ($array[$j] < $array[$j-1]){ 
 56                                 $tmp = $array[$j]; 
 57                                 $array[$j] = $array[$j-1]; 
 58                                 $array[$j-1] = $tmp; 
 59                         } 
 60                 } 
 61         } 
 62         return $array; 
 63 } 
 64 
 65 //快速排序(数组排序) 
 66 function quick_sort($array) { 
 67         if (count($array) <= 1) return $array; 
 68 
 69         $key = $array[0]; 
 70         $left_arr = array(); 
 71         $right_arr = array(); 
 72 
 73         for ($i=1; $i<count($array); $i++){ 
 74                 if ($array[$i] <= $key) 
 75                         $left_arr[] = $array[$i]; 
 76                 else 
 77                         $right_arr[] = $array[$i]; 
 78         } 
 79 
 80         $left_arr = quick_sort($left_arr); 
 81         $right_arr = quick_sort($right_arr); 
 82 
 83         return array_merge($left_arr, array($key), $right_arr); 
 84 } 
 85 
 86 
 87 
 88 //------------------------ 
 89 // PHP内置字符串函数实现 
 90 //------------------------ 
 91 
 92 //字符串长度 
 93 function strlen($str) 
 94 { 
 95         if ($str == '') return 0; 
 96 
 97         $count = 0; 
 98         while (1){ 
 99                 if ($str[$count] != NULL){ 
100                         $count++; 
101                         continue; 
102                 }else{ 
103                         break; 
104                 } 
105         } 
106         return $count; 
107 } 
108 
109 //截取子串 
110 function substr($str, $start, $length=NULL) 
111 { 
112         if ($str=='' || $start>strlen($str)) return; 
113         if (($length!=NULL) && ($start>0) && ($length>strlen($str)-$start)) return; 
114         if (($length!=NULL) && ($start<0) && ($length>strlen($str)+$start)) return; 
115         if ($length == NULL) $length = (strlen($str) - $start); 
116          
117         if ($start < 0){ 
118                 for ($i=(strlen($str)+$start); $i<(strlen($str)+$start+$length); $i++) { 
119                         $substr .= $str[$i]; 
120                 } 
121         } 
122 
123         if ($length > 0){ 
124                 for ($i=$start; $i<($start+$length); $i++) { 
125                         $substr .= $str[$i]; 
126                 } 
127         } 
128 
129         if ($length < 0){ 
130                 for ($i=$start; $i<(strlen($str)+$length); $i++) { 
131                         $substr .= $str[$i]; 
132                 } 
133         } 
134         return $substr; 
135 } 
136 
137 //字符串翻转 
138 function strrev($str) 
139 { 
140         if ($str == '') return 0; 
141         for ($i=(strlen($str)-1); $i>=0; $i--){ 
142                 $rev_str .= $str[$i]; 
143         } 
144         return $rev_str; 
145 } 
146 
147 
148 //字符串比较 
149 function strcmp($s1, $s2) 
150 { 
151         if (strlen($s1) < strlen($s2)) return -1; 
152         if (strlen($s1) > strlen($s2)) return 1; 
153 
154         for ($i=0; $i<strlen($s1); $i++){ 
155                 if ($s1[$i] == $s2[$i]){ 
156                         continue; 
157                 }else{ 
158                         return false; 
159                 } 
160         } 
161         return 0; 
162 } 
163 
164 
165 //查找字符串 
166 function strstr($str, $substr) 
167 { 
168         $m = strlen($str); 
169         $n = strlen($substr); 
170         if ($m < $n) return false; 
171 
172         for ($i=0; $i<=($m-$n+1); $i++){ 
173                 $sub = substr($str, $i, $n); 
174                 if (strcmp($sub, $substr) == 0)  return $i; 
175         } 
176         return false; 
177 } 
178 
179 //字符串替换 
180 function str_replace($substr, $newsubstr, $str) 
181 { 
182         $m = strlen($str); 
183         $n = strlen($substr); 
184         $x = strlen($newsubstr); 
185         if (strchr($str, $substr) == false) return false; 
186 
187         for ($i=0; $i<=($m-$n+1); $i++){ 
188                 $i = strchr($str, $substr); 
189                 $str = str_delete($str, $i, $n); 
190                 $str = str_insert($str, $i, $newstr); 
191         } 
192         return $str; 
193 } 
194 
195 
196 
197 //-------------------- 
198 // 自实现字符串处理函数
199 //-------------------- 
200 
201 //插入一段字符串 
202 function str_insert($str, $i, $substr) 
203 { 
204         for($j=0; $j<$i; $j++){ 
205                 $startstr .= $str[$j]; 
206         } 
207         for ($j=$i; $j<strlen($str); $j++){ 
208                 $laststr .= $str[$j]; 
209         } 
210         $str = ($startstr . $substr . $laststr); 
211 
212         return $str; 
213 } 
214 
215 //删除一段字符串 
216 function str_delete($str, $i, $j) 
217 { 
218         for ($c=0; $c<$i; $c++){ 
219                 $startstr .= $str[$c]; 
220         } 
221         for ($c=($i+$j); $c<strlen($str); $c++){ 
222                 $laststr .= $str[$c]; 
223         } 
224         $str = ($startstr . $laststr); 
225 
226         return $str; 
227 } 
228 
229 //复制字符串 
230 function strcpy($s1, $s2) 
231 { 
232         if (strlen($s1)==NULL || !isset($s2)) return; 
233 
234         for ($i=0; $i<strlen($s1); $i++){ 
235                 $s2[] = $s1[$i]; 
236         } 
237         return $s2; 
238 } 
239 
240 //连接字符串 
241 function strcat($s1, $s2) 
242 { 
243         if (!isset($s1) || !isset($s2)) return; 
244         $newstr = $s1; 
245         for($i=0; $i<count($s); $i++){ 
246                 $newstr .= $st[$i]; 
247         } 
248         return $newsstr; 
249 } 
250 
251 //简单编码函数(与php_decode函数对应) 
252 function php_encode($str) 
253 { 
254         if ($str=='' && strlen($str)>128) return false; 
255 
256         for($i=0; $i<strlen($str); $i++){ 
257                 $c = ord($str[$i]); 
258                 if ($c>31 && $c<107) $c += 20; 
259                 if ($c>106 && $c<127) $c -= 75; 
260                 $word = chr($c); 
261                 $s .= $word; 
262         }  
263 
264         return $s;  
265 } 
266 
267 //简单解码函数(与php_encode函数对应) 
268 function php_decode($str) 
269 { 
270         if ($str=='' && strlen($str)>128) return false; 
271 
272         for($i=0; $i<strlen($str); $i++){ 
273                 $c = ord($word); 
274                 if ($c>106 && $c<127) $c = $c-20; 
275                 if ($c>31 && $c<107) $c = $c+75; 
276                 $word = chr($c); 
277                 $s .= $word; 
278         }  
279 
280         return $s;  
281 } 
282 
283 //简单加密函数(与php_decrypt函数对应) 
284 function php_encrypt($str) 
285 { 
286         $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890'; 
287         $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359'; 
288 
289         if (strlen($str) == 0) return false; 
290 
291         for ($i=0; $i<strlen($str); $i++){ 
292                 for ($j=0; $j<strlen($encrypt_key); $j++){ 
293                         if ($str[$i] == $encrypt_key[$j]){ 
294                                 $enstr .= $decrypt_key[$j]; 
295                                 break; 
296                         } 
297                 } 
298         } 
299 
300         return $enstr; 
301 } 
302 
303 //简单解密函数(与php_encrypt函数对应) 
304 function php_decrypt($str) 
305 { 
306         $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890'; 
307         $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359'; 
308 
309         if (strlen($str) == 0) return false; 
310 
311         for ($i=0; $i<strlen($str); $i++){ 
312                 for ($j=0; $j<strlen($decrypt_key); $j++){ 
313                         if ($str[$i] == $decrypt_key[$j]){ 
314                                 $enstr .= $encrypt_key[$j]; 
315                                 break; 
316                         } 
317                 } 
318         } 
319 
320         return $enstr; 
321 } 
322 
323 ?>
324 
posted on 2009-06-05 22:46  睿达团队  阅读(3839)  评论(0)    收藏  举报