1.二分查找
1 function bin_sch($arr, $low, $high, $k){ 2 if($low <= $high){ 3 $mid = intval(($low+$high)/2); 4 if($arr[$mid] == $k){ 5 return $mid; 6 }elseif($k < $arr[$mid]){ 7 return bin_sch($arr, $low, $mid-1, $k); 8 }else{ 9 return bin_sch($arr, $mid+1, $high, $k); 10 } 11 } 12 return -1; 13 }
2.顺序查找
1 function seq_sch($arr, $k){ 2 $n = count($arr); 3 $arr[$n] = $k; 4 for($i=0; $i<$n; $i++){ 5 if($arr[$i] == $k){ 6 break; 7 } 8 } 9 if($i<$n){ 10 return $i; 11 }else{ 12 return -1; 13 } 14 }
3.线性表的删除(数组中实现)
1 function delete_array_element($arr, $i){ 2 $len = count($arr); 3 for($j=$i; $j<$len-1; $j++){ 4 $arr[$j] = $arr[$j+1]; 5 } 6 array_pop($arr); 7 return $arr; 8 }
4.字符串长度
1 <?php 2 function strlen($str){ 3 if($str == "") return 0; 4 $count = 0; 5 while(1){ 6 if($str[$count] != NULL){ 7 $count++; 8 continue; 9 }else{ 10 break; 11 } 12 } 13 return $count; 14 } 15 ?>
5.字符串翻转
1 function strrev($str){ 2 if($str == "") return 0; 3 for($i=strlen($str)-1; $i>=0; $i--){ 4 $rev_str .= $str[$i]; 5 } 6 return $rev_str; 7 }
6.查找字符串位置
1 function strpos($str, $substr){ 2 $m = strlen($str); 3 $n = strlen($substr); 4 if($m<$n) return false; 5 for($i=0; $i<=($m-$n+1); $i++){ 6 $sub = substr($str, $i, $n); 7 if(strcmp($sub, $substr) == 0){ 8 return $i; 9 } 10 } 11 return false; 12 }
7.插入一段字符串
1 function str_insert($str, $i, $substr){ 2 for($j=0; $j<$i; $j++){ 3 $startstr .= $str[$j]; 4 } 5 for($j=$i; $j<strlen($str); $j++){ 6 $laststr .= $str[$j]; 7 } 8 $str=($startstr.$substr.$laststr); 9 return $str; 10 }
8.删除一段字符串
1 function str_delete($str, $i, $j){ 2 for($c=0; $c<$i; $c++){ 3 $startstr .= $str[$c]; 4 } 5 for($c=$i+$j; $c<strlen($str), $c++){ 6 $laststr .= $str[$c]; 7 } 8 $str = ($startstr.$laststr); 9 return $str; 10 }
9.连接字符串
1 function strcat($s1, $s2){ 2 if(!isset($s1) || !isset($s2)) return; 3 $newstr = $s1; 4 for($i=0; $i<strlen($s2); $i++){ 5 $newstr .= $s2[$i]; 6 } 7 return $newstr; 8 }