ホームページ > バックエンド開発 > PHPチュートリアル > PHP の基本的なアルゴリズムのコレクション

PHP の基本的なアルゴリズムのコレクション

不言
リリース: 2023-03-24 19:00:02
オリジナル
5334 人が閲覧しました

この記事では主にPHPの基本的なアルゴリズム集を紹介していますので、必要な方は参考にしてください

二分探索(配列内の特定の要素を見つける)


この方法はインデックス配列に基づいており、値は小さいものから大きいものへと並べ替えられます。

連想配列は適用されません。配列の並べ替え方法が一貫していないか、並べ替えがありません。並べ替えなどを追加するには、それに応じて if 条件を変更してください。

逐次検索(配列内の要素を検索)

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;   
}
ログイン後にコピー

簡略化・強化バージョン

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);
ログイン後にコピー

線形テーブルの削除(配列で実装)

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;   
    }   
}   

此方法适用于所有一维数组
ログイン後にコピー

$iで削除パラメータの位置を指定

バブルソート(配列ソート)

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 ;  
}
ログイン後にコピー

クイックソート (配列ソート)

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;  
 }
ログイン後にコピー

文字列長

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);  
}
ログイン後にコピー

  • while (1) ここで、1 は定数式を表し、0 に等しくなることはありません。したがって、ループは引き続き実行されます。ループから抜け出すために Break または同様のステートメントを設定しない限り、ループは終了します

  • $str[count] PHP は、対応する位置にある対応するパラメーターを読み取るために添字を使用する弱い型付け言語です。部分文字列をインターセプト

    function strlen ($str){  
        if ($str == &#39;&#39; ) return 0;  
        $count =  0;  
        while (1){  
            if ($str[$count] != NULL){  
                $count++;  
                continue;  
            }else{  
                break;  
            }  
        }  
        return $count;  
    }
    ログイン後にコピー

    }
文字列反転

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;
ログイン後にコピー

文字列比較

function strrev($str){  
    if ($str == &#39;&#39;) return 0 ;  
    for ($i=(strlen($str)- 1); $i>=0; $i --){  
            $rev_str .= $str[$i ];  
    }  
    return $rev_str;  
}
ログイン後にコピー

文字列を検索

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;  
}
ログイン後にコピー

strcmp(

substr) 文字列比較メソッド 比較メソッドを使用したくない場合は、 for ループを追加してください

文字列置換

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 ;  
}
ログイン後にコピー


strchr() 関数は、別の文字列内で最初に出現する文字列を検索します。

この関数は strstr() 関数のエイリアスです。

  • 文字列を挿入

    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;  
    }
    ログイン後にコピー

    文字列を削除
  • 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 ;  
    }
    ログイン後にコピー
文字列をコピー

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;  
}
ログイン後にコピー

文字列を接続

function strcpy($s1, $s2){  
    if (strlen($s1)==NULL || !isset($s2)) return;  
    for ($i=0; $i<strlen($s1); $i++){  
        $s2[] = $s1[$i];  
    }  
    return $s2;  
}
ログイン後にコピー

以上がPHP の基本的なアルゴリズムのコレクションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート