zoukankan      html  css  js  c++  java
  • 几种基本数据结构算法

    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 }
  • 相关阅读:
    nm命令与符号说明
    (OK) 编译xerces-c-3.1.2(动态库)—CentOS 7— android-ndk
    【19.00%】【vijos p1906】联合权值
    【30.00%】【vijos 1909】寻找道路
    【23.33%】【hdu 5945】Fxx and game
    【32.26%】【codeforces 620C】Pearls in a Row
    【第400篇题解纪念2016年10月28日】【28.10%】【codeforces 617E】XOR and Favorite Number
    【20.00%】【codeforces 44G】Shooting Gallery
    【19.27%】【codeforces 618D】Hamiltonian Spanning Tree
    【17.00%】【codeforces 621D】Rat Kwesh and Cheese
  • 原文地址:https://www.cnblogs.com/hell0x/p/5580195.html
Copyright © 2011-2022 走看看