データ|データ構造|文字列
以前に書いたアルゴリズムと文字列処理関数の一部を整理します。これらは役に立たず、学習用です。
著者: heiyeluren
ブログ: http://blog.csdn.net/heiyeshuwu
日付: 2006-06-10 23:50
//----- ---------------
//基本的なデータ構造アルゴリズム
//------------------------------------- -
//2 点検索 (配列内の要素を見つける)
function bin_sch($array, $low, $high, $ k){$low+$ high)/
2); 、$mid
-1、$k); $中旬 +1 , $high,
$k); //逐次検索 (配列内の要素を検索) 関数seq_sch
($array, $n
, $k){ $array[ $n
] = $k; for($i=0; $i<$n; $i
++){ if($array[$i]==$k){ if (
$i
<
$n ){ } }
//線形テーブルの削除(arrayで実装) function delete_array_element
($array,
)
{
=
count($array ); for ($j=$i
)
++){ $array[] $j] = $array[
$j+1]; array_pop($array ); 戻る ( $array
) { lt;= 0) false ; for($i=
0
; ) $ i<$count;
$i ++){
$j
=$count
-1; >$i; --){ ;if ($array[$j] < $array[$j-1]){
$array[ $j]; ] = $array
[$j-1 ]; $tmp ; ; }
//クイックソート(配列ソート) function quick_sort($array) { if (count) (
$配列
) <= 1) return
$array
;
=配列(); $right_arr = array(); $i<
count($array); $i+ +){i]&lt; =$key
)それ以外の場合
) ; array_merge($left_arr, array($ key
),
$right_arr); //-------------------------- // PHP 組み込み文字列関数の実装//--------------- ---------- //文字列の長さ関数
strlen ($str) { 0
; (1){if($str[$count]!=null
){
$count
++;
$count
; } //部分文字列function substr
($str, $start 、$長さ= NULL
) { ($str==' '
|| $start>
strlen ($str )) 戻ります; if (($length!=NULL) && ($start>0) && ($length>)ストレン( $str)-$start)) return;
if (($length!=NULL) && ($start<0) && ($length) >ストラレン( $str)+$start)) return;
if ($length == NULL) $length = (strlen($str) - $start);
if ($start < 0){
for ($i=( strlen($str)+$start ); $i<($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++){
}// string flip '') $i>= $i
--)の 0
; $i
] ; $rev_str
;/ string compartionstrcmp($s1、$s2) strlen
($s1) < strlen($s2)) return -1
; ( $s1 ) > strlen($s2)) 1を返します。 0 $ i <
strlen($s1); $i++){ if($s1[$i] == $s2[$i] { strstr($str, $substr
) { $n =
strlen
($substr ($i
)
=
0;
$i<=($m-$n+$i); ++) {
$sub = substr($str, $i
, $n); ($サブ , $substr
) == 0) return $i } false
; //文字列置換関数 str_replace($substr, $newsubstr, $str) { strlen
($str); $n = strlen($substr);
$x = strlen($newsubstr);
if (strchr($str, $substr) == false) return false ;
for ($i=0; $i<=($m-$n+ 1); $i++){
$i = strchr($str, $substr );
$str = str_delete($str, $i, $n );
$str = str_insert($str, $i, $newstr );
}
return $str;
}
//---------
// 自实现字符串处理函数
//-------- -------------
//插入一段字符串
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];
$startstr
。 str_delete($str 、$i、$j)
{
for ($c=
0
; $c
<$i ; $c++){ for ($i+$j); $str
);
$c ++){ $str = ($startstr . $laststr リターン $s1、$s2
) { If (strlen($s1)==NULL
|| !isset($s2 )) return; () $i=0; $i<strlen($s1); ++){ $s2[] = $s1[$i]
; 関数
strcat
( $s1
、$s2) { ) || !isset($s2 ))
for(
$i= ) 0; $i
<($s); [
$i] ] ($str) if ) return false for($i=0
) $i< ;strlen($str) $i
++) { If ($c>
31
&& $c
) <107) $c += 20
;if ($c>106 && $c<127) $c -= 75 ;
単語 =chr($c); $str)
{ if ($str= ='' &&(
$str
)&g t;128) return
false
;
for($i= $c = ord
(
$word ); <127) $ c=$c-20; &&$c
<107) $ c = $c+($c); s .= $word
;//簡易暗号化関数(php_decrypt関数に相当)
function php_encrypt($str)
{
$encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890 ' ;
strlen($str) == 0 )
false を返します ($i=) 0) $str); $i
++){ $encrypt_key); $j ++){ ]) {=$decrypt_key[$j];機能(php_encrypt関数に対応)
{ 'abcdefghijklmnopqrstuvwxyz1234567890'; muhelkpdawxfyivrsj2468021359'; if (strlen($str ) == 0 ) false
を返します。 for ($i=0; $i<strlen($str); $i ++){
for ($j=0; $j<strlen($decrypt_key); $j ++){
if ($str[$i] == $decrypt_key[$j]){
$enstr .= $encrypt_key [$j]; 休憩。
}
}
return
$enstr; }
?>