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 <= 0return 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<= 1return $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 < $nreturn 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== falsereturn 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)>128return 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)>128return 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== 0return 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== 0return 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  睿达团队  阅读(3819)  评论(0编辑  收藏  举报