Maison >développement back-end >tutoriel php >Une collection d'algorithmes de base pour PHP

Une collection d'algorithmes de base pour PHP

不言
不言original
2018-04-24 13:58:215342parcourir

Cet article présente principalement la collection d'algorithmes de base de PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Recherche binaire (recherche d'un élément dans un tableau). )

function bin_sch($array,  $low, $high, $k){   
    if ( $low <= $high){   
        $mid =  intval(($low+$high)/2 );   
        if ($array[$mid] ==  $k){   
            return $mid;   
        }elseif ( $k < $array[$mid]){   
            return  bin_sch($array, $low,  $mid-1, $k);   
        }else{   
            return  bin_sch($array, $mid+ 1, $high, $k);   
        }   
    }   
    return -1;   
}


Cette méthode est destinée aux tableaux d'index et les valeurs sont triées de petite à grande
Si elle n'est pas applicable aux tableaux associatifs, le tableau la méthode de tri est incohérente ou il n'y a pas de tri, veuillez modifier la condition if en conséquence. Tri ajouté, etc.

Recherche séquentielle (recherche d'un élément dans un tableau)

function  seq_sch($array, $n,  $k){   
    $array[$n] =  $k;   
    for($i=0;  $i<$n; $i++){   
        if( $array[$i]==$k){   
            break;   
        }   
    }   
    if ($i<$n){   
        return  $i;   
    }else{   
        return -1;   
    }   
}   

此方法适用于索引数组并且$n = count($array);

Simplifiée et. version améliorée

function  seq_sch($array, $k){   
    $y = $m = &#39;no&#39;; 
    foreach($array as $i => $v){
        if($v == $k){  
            if($i == &#39;no&#39;){$m = &#39;yes&#39;}//防止key = no
            $y = $i; 
            break;   
        }   
    }   
    if ($y != &#39;no&#39; || $m == &#39;yes&#39;){   
        return  $y;   
    }else{   
        return -1;   
    }   
}   

此方法适用于所有一维数组

Suppression des tableaux linéaires (implémentés dans un tableau)

function delete_array_element($array , $i){  
    $len = count($array);   
    for ($j=$i; $j<$len; $j++){  
            $array[$j] = $array [$j+1];  
    }  
    array_pop ($array);  
    return $array ;  
}

$i précise la position du paramètre supprimé

Tri à bulles (tri par tableau)

function bubble_sort($array){  
    $count = count( $array);  
    if ($count <= 0 ) return false;  
    for($i=0 ; $i<$count; $i ++){  
        for($j=$count-1 ; $j>$i; $j--){  
            if ($array[$j] < $array [$j-1]){  
                //引用第三变量进项数组交换
                $tmp = $array[$j];  
                $array[$j] = $array[ $j-1];  
                $array [$j-1] = $tmp;  
             }  
         }  
     }  
     return $array;  
 }

Tri rapide (tri par tableau)

function quick_sort($array ) {  
    if (count($array) <= 1) return  $array;  
    $key = $array [0];  
    $left_arr  = array();  
    $right_arr = array();  
    for ($i= 1; $i<count($array ); $i++){  
        if ($array[ $i] <= $key)  
            $left_arr [] = $array[$i];  
        else  
            $right_arr[] = $array[$i];  
    }  
    $left_arr = quick_sort($left_arr);  
    $right_arr = quick_sort($right_arr);  
    return array_merge($left_arr , array($key), $right_arr);  
}

Longueur de chaîne

function strlen ($str){  
    if ($str == &#39;&#39; ) return 0;  
    $count =  0;  
    while (1){  
        if ($str[$count] != NULL){  
            $count++;  
            continue;  
        }else{  
            break;  
        }  
    }  
    return $count;  
}
  • tandis que (1) où 1 représente une expression constante , qui ne sera jamais égal à 0. La boucle continuera donc à s’exécuter. À moins que vous ne définissiez un break ou une instruction similaire pour sortir de la boucle, la boucle se terminera

  • $str[count] PHP est un langage faiblement typé. Utilisez des indices pour lire les paramètres correspondants. à la position correspondante

Intercepter la sous-chaîne

function substr($str, $start,  $length=NULL){  
    if ($str== &#39;&#39; || $start>strlen($str)) return;  
    if (($length!=NULL) && ($start>0) && ($length>strlen($str)-$start)) return;  
    if (($length!=NULL) && ($start<0) && ($length>strlen($str )+$start)) return;  
    if ($length == NULL) $length = (strlen($str) - $start);  

    if ($start < 0){  
            for ($i=(strlen($str)+$start); $i<(strlen ($str)+$start+$length ); $i++) {  
                 $substr .=  $str[$i];  
            }  
    }  
    if ($length > 0){  
            for ($i= $start; $i<($start+$length); $i++) {  
                  $substr .= $str[$i];  
            }  
    }  
    if ($length < 0){  
            for ($i =$start; $i<(strlen($str)+$length); $i++) {  
                   $substr .= $str[$i ];  
            }  
    }  
    return $substr;

}

String flip

function strrev($str){  
    if ($str == &#39;&#39;) return 0 ;  
    for ($i=(strlen($str)- 1); $i>=0; $i --){  
            $rev_str .= $str[$i ];  
    }  
    return $rev_str;  
}

Comparaison de chaînes

function strcmp($s1, $s2){  
    if (strlen($s1) <  strlen($s2)) return -1 ;  
    if (strlen($s1) > strlen( $s2)) return 1;  
    for ($i=0; $i<strlen($s1); $i++){  
        if ($s1[$i] == $s2[$i]){  
            continue;  
        }else{  
            return false;  
        }  
    }  
    return  0;  
}

Trouver la chaîne

function  strstr($str, $substr){  
    $m = strlen($str);  
    $n = strlen($substr);  
    if ($m < $n) return false ;  
    for($i=0; $i<=($m-$n+1); $i++){  
        $sub = substr($str, $i, $n);  
        if (strcmp($sub, $substr) ==  0)  return $i;  
    }  
    return false ;  
}

strcmp(

substr) méthode de comparaison de chaîne si vous je ne veux pas comparer Pour la méthode, veuillez ajouter une boucle for


Remplacement de chaîne

function str_replace($substr, $newsubstr, $str){  
    $m = strlen($str);  
    $n = strlen($substr);  
    $x = strlen($newsubstr);  
    if (strchr($str, $substr) == false) return false;
    $str_new = $str  
    for ($i=0; $i<=($m-$n+1); $i++){  
        $i = strchr($str, $substr);  
        $str = str_delete($str_new, $i, $n);  
        $str = str_insert($str_new, $i, $newstr);  
    }  
    return $str_new;  
}
  • strchr() La fonction recherche une chaîne dans une autre chaîne apparaît pour la première fois dans .
    Cette fonction est un alias de la fonction strstr().

Insérer une chaîne

function str_insert($str, $i , $substr) {  
    for($j=0 ; $j<$i; $j++){  
            $startstr .= $str[$j];  
    }  
    for ($j=$i; $j <strlen($str); $j++){  
            $laststr .= $str[$j ];  
    }  
    $str = $startstr.$substr.$laststr;  
    return $str ;  
}

Supprimer une chaîne

function str_delete($str, $i, $j){  
    for ( $c=0; $c<$i; $c++){  
        $startstr .= $str [$c];  
    }  
    for ($c=( $i+$j); $c<strlen ($str); $c++){  
        $laststr .= $str[$c];  
    }  
    $str = $startstr.$laststr;  
    return $str;  
}

Copier la chaîne

function strcpy($s1, $s2){  
    if (strlen($s1)==NULL || !isset($s2)) return;  
    for ($i=0; $i<strlen($s1); $i++){  
        $s2[] = $s1[$i];  
    }  
    return $s2;  
}

Chaîne de connexion

function strcat($s1 ,$s2){  
    if (!isset($s1) || !isset( $s2)) return;  
    $newstr = $s1 ;  
    for($i=0; $i<strlen($s2); $i++){  
            $newstr .= $s2[$i];  
    }  
    return $newstr;  
}

                                                                                              

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP décode le codage UnicodeArticle suivant:PHP décode le codage Unicode