几种基本数据结构算法

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 }
原文地址:https://www.cnblogs.com/hell0x/p/5580195.html