ホームページ  >  記事  >  バックエンド開発  >  基本的なデータ構造アルゴリズム_PHP チュートリアル

基本的なデータ構造アルゴリズム_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:52:33828ブラウズ

//基本的なデータ構造アルゴリズム
//---------------------

//二分探索 (配列内の要素を検索)
関数 bin_sch($array, $low, $high, $k){
If ($low $mid = intval(($low+$high)/2);
if ($array[$mid] == $k){ return $mid; }elseif ($k return bin_sch($array, $low, $mid-1, $k); }それ以外{ return bin_sch($array, $mid+1, $high, $k);                                         }
-1 を返します。 }

//逐次検索 (配列内の要素を検索)
関数 seq_sch($array, $n, $k){
$array[$n] = $k; for($i=0; $i if($array[$i]==$k){
壊す;                                         }
If ($i $i を返す; }その他{
return -1; }
}

//線形テーブルの削除(配列で実装)
関数 delete_array_element($array, $i)
{
$len = count($array); for ($j=$i; $j $array[$j] = $array[$j+1]; }
array_pop($array); $array を返します。 }

//バブルソート(配列ソート)
関数 bubble_sort($array)
{
$count = count($array); if ($count
for($i=0; $i for($j=$count-1; $j>$i; $j--){
if($ array [$ j]< $ array [$ j-1]){
                                                                                                                                                                                                                                                                                                                                                                                                                                                    }
$array を返します。 }

//クイックソート(配列ソート)
関数クイックソート($array) {
if (count($array) $key = $array[0]; $left_arr = array(); $right_arr = array();
for ($i=1; $i if ($array[$i]                                                                                                                                                                 その他
$right_arr[] = $array[$i]; }

$left_arr = クイックソート($left_arr); $right_arr = クイックソート($right_arr);
array_merge($left_arr, array($key), $right_arr) を返します
}



//------------------------
// PHP 組み込み文字列関数の実装
//------------------------

//文字列の長さ
関数 strlen($str)
{
if ($str == '') は 0 を返します

$count = 0; ながら (1){
If ($ Str [$ Count]! = Null) {
                                                                                                                                                          続く;                                                                                                                                                                           壊す;                                                      }
$count を返します。 }

//部分文字列をインターセプトします
関数 substr($str, $start, $length=NULL)
{
If ($str=='' || $start>strlen($str))
If (($length!=NULL) && ($start>0) && ($length>strlen($str)-$start))
を返します。 If (($length!=NULL) && ($startstrlen($str)+$start))
If ($length == NULL) $length = (strlen($str) - $start);
if ($start for ($i=(strlen($str)+$start); $i                                                                                                                                                                                                  }

if ($length > 0){
for ($i=$start; $i                                                                                                                                                                                                    }

if ($length for ($i=$start; $i                                                                                                                                                                                                  }
戻り $substr; }

//文字列反転
関数 strrev($str)
{
if ($str == '') は 0 を返します
for ($i=(strlen($str)-1); $i>=0; $i--){
$rev_str .= $str[$i]; }
戻り $rev_str; }


//文字列比較
関数 strcmp($s1, $s2)
{
(strlen($s1) strlen($s2)) の場合は 1 を返します。
for ($i=0; $i If ($ s1 [$ i] == $ s2 [$ i]) {
続く;                                                                                                                                                                             false を返します。                                                      }
0 を返します。 }


//文字列を検索します
関数 strstr($str, $substr)
{
$m = strlen($str); $n = strlen($substr);if ($m
for ($i=0; $i $sub = substr($str, $i, $n); If (STRCMP ($ substr) == 0) $ i を返します。 }
偽を返します
}

//文字列置換
関数 str_replace($substr, $newsubstr, $str)
{
$m = strlen($str); $n = strlen($substr); $x = strlen($newsubstr); if (strchr($str, $substr) == false) は false を返します

for ($i=0; $i $i = strchr($str, $substr); $str = str_delete($str, $i, $n); $str = str_insert($str, $i, $newstr); }

$str を返します。 }



//---------------------
// 自己実装した文字列処理関数
//---------------------

//文字列を挿入します
関数 str_insert($str, $i, $substr)
{
for($j=0; $j $startstr .= $str[$j]; }
for ($j=$i; $j $laststr .= $str[$j]; }
$str = ($startstr . $substr . $laststr);
$str を返します。 }

//文字列を削除します
関数 str_delete($str, $i, $j)
{
for ($c=0; $c $startstr .= $str[$c]; }
for ($c=($i+$j); $c $laststr .= $str[$c]; }
$str = ($startstr . $laststr);
$str を返します。 }

//文字列をコピー
関数 strcpy($s1, $s2)
{
if (strlen($s1)==NULL || !isset($s2))
を返します。
for ($i=0; $i $s2[] = $s1[$i]; }

$s2 を返します。 }

//接続文字列
関数 strcat($s1, $s2)
{
If (!isset($s1) || !isset($s2))
を返します。 $newstr = $s1; for($i=0; $i $newstr .= $st[$i]; }
$newsstr を返します。 }

//簡易エンコード関数(php_decode関数に相当)
関数 php_encode($str)
{
if ($str=='' && strlen($str)>128) は false を返します

for($i=0; $i $c = ord($str[$i]); ($ C & GT; 31 && $ C & LT; 107) $ C += 20; の場合 if ($c>106 && $c; $word = chr($c);                                                                                                                                                                                                                                                                                                                                            
$s を返す; }

//簡易デコード関数(php_encode関数に相当)
関数 php_decode($str)
{
        if ($str=='' && strlen($str)>128) は false を返します。

        for($i=0; $i                 $c = ord($word);
                if ($c>106 && $c                 if ($c>31 && $c                 $word = chr($c);
                $s .= $word;
        }

        $s を返します。  
}

//简单加密関数数(与php_decrypt関数数对应)
関数 php_encrypt($str)
{
        $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';
        $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';

        if (strlen($str) == 0) false を返します。

        for ($i=0; $i                 for ($j=0; $j                         if ($str[$i] == $encrypt_key[$j]){
                                $enstr .= $decrypt_key[$j];
                                壊す;
                        }
                }
        }

        $enstr を返します。
}

//简单解密関数数(与php_encrypt関数数对应)
関数 php_decrypt($str)
{
        $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890';
        $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359';

        if (strlen($str) == 0) false を返します。

        for ($i=0; $i                 for ($j=0; $j                         if ($str[$i] == $decrypt_key[$j]){
                                $enstr .= $encrypt_key[$j];
                                壊す;
                        }
                }
        }

        $enstr を返します。
}

?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632482.html技術記事 ? //-------------------- //基本データ蓄積瞄算法 //--------- //二分查找(数组里查找特定元素) function bin_sch($array, $low, $high, $k){ if ($low = $h...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。