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

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

Jul 13, 2016 am 10:52 AM
要素 基本 データ構造 配列 探す アルゴリズム

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

//二分探索 (配列内の要素を検索)
関数 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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C++ での機械学習アルゴリズムの実装: 一般的な課題と解決策 C++ での機械学習アルゴリズムの実装: 一般的な課題と解決策 Jun 03, 2024 pm 01:25 PM

C++ の機械学習アルゴリズムが直面する一般的な課題には、メモリ管理、マルチスレッド、パフォーマンスの最適化、保守性などがあります。解決策には、スマート ポインター、最新のスレッド ライブラリ、SIMD 命令、サードパーティ ライブラリの使用、コーディング スタイル ガイドラインの遵守、自動化ツールの使用が含まれます。実践的な事例では、Eigen ライブラリを使用して線形回帰アルゴリズムを実装し、メモリを効果的に管理し、高性能の行列演算を使用する方法を示します。

改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用 改良された検出アルゴリズム: 高解像度の光学式リモートセンシング画像でのターゲット検出用 Jun 06, 2024 pm 12:33 PM

01 今後の概要 現時点では、検出効率と検出結果の適切なバランスを実現することが困難です。我々は、光学リモートセンシング画像におけるターゲット検出ネットワークの効果を向上させるために、多層特徴ピラミッド、マルチ検出ヘッド戦略、およびハイブリッドアテンションモジュールを使用して、高解像度光学リモートセンシング画像におけるターゲット検出のための強化されたYOLOv5アルゴリズムを開発しました。 SIMD データセットによると、新しいアルゴリズムの mAP は YOLOv5 より 2.2%、YOLOX より 8.48% 優れており、検出結果と速度のバランスがより優れています。 02 背景と動機 リモート センシング技術の急速な発展に伴い、航空機、自動車、建物など、地表上の多くの物体を記述するために高解像度の光学式リモート センシング画像が使用されています。リモートセンシング画像の判読における物体検出

PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 May 03, 2024 pm 09:03 PM

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

58 ポートレート プラットフォームの構築におけるアルゴリズムの適用 58 ポートレート プラットフォームの構築におけるアルゴリズムの適用 May 09, 2024 am 09:01 AM

1. 58 Portraits プラットフォーム構築の背景 まず、58 Portraits プラットフォーム構築の背景についてお話ししたいと思います。 1. 従来のプロファイリング プラットフォームの従来の考え方ではもはや十分ではありません。ユーザー プロファイリング プラットフォームを構築するには、複数のビジネス分野からのデータを統合して、ユーザーの行動や関心を理解するためのデータ マイニングも必要です。最後に、ユーザー プロファイル データを効率的に保存、クエリ、共有し、プロファイル サービスを提供するためのデータ プラットフォーム機能も必要です。自社構築のビジネス プロファイリング プラットフォームとミドルオフィス プロファイリング プラットフォームの主な違いは、自社構築のプロファイリング プラットフォームは単一のビジネス ラインにサービスを提供し、オンデマンドでカスタマイズできることです。ミッドオフィス プラットフォームは複数のビジネス ラインにサービスを提供し、複雑な機能を備えていることです。モデリングを提供し、より一般的な機能を提供します。 2.58 中間プラットフォームのポートレート構築の背景のユーザーのポートレート 58

データソートにおけるPHP配列グループ化機能の応用 データソートにおけるPHP配列グループ化機能の応用 May 04, 2024 pm 01:03 PM

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

Javaのデータ構造とアルゴリズム: 詳細な説明 Javaのデータ構造とアルゴリズム: 詳細な説明 May 08, 2024 pm 10:12 PM

データ構造とアルゴリズムは Java 開発の基礎です。この記事では、Java の主要なデータ構造 (配列、リンク リスト、ツリーなど) とアルゴリズム (並べ替え、検索、グラフ アルゴリズムなど) について詳しく説明します。これらの構造は、スコアを保存するための配列、買い物リストを管理するためのリンク リスト、再帰を実装するためのスタック、スレッドを同期するためのキュー、高速検索と認証のためのツリーとハッシュ テーブルの使用など、実際の例を通じて説明されています。これらの概念を理解すると、効率的で保守しやすい Java コードを作成できるようになります。

重複要素の検索における PHP 配列グループ化関数の役割 重複要素の検索における PHP 配列グループ化関数の役割 May 05, 2024 am 09:21 AM

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。

画期的な CVM アルゴリズムが 40 年以上の計数の問題を解決します。コンピューター科学者がコインを投げて「ハムレット」を表す固有の単語を割り出す 画期的な CVM アルゴリズムが 40 年以上の計数の問題を解決します。コンピューター科学者がコインを投げて「ハムレット」を表す固有の単語を割り出す Jun 07, 2024 pm 03:44 PM

数を数えるのは簡単そうに思えますが、実際にやってみるととても難しいです。あなたが野生動物の個体数調査を実施するために自然のままの熱帯雨林に運ばれたと想像してください。動物を見かけたら必ず写真を撮りましょう。デジタル カメラでは追跡された動物の総数のみが記録されますが、固有の動物の数に興味がありますが、統計はありません。では、このユニークな動物群にアクセスする最善の方法は何でしょうか?この時点で、今すぐ数え始めて、最後に写真から各新種をリストと比較すると言わなければなりません。ただし、この一般的なカウント方法は、数十億エントリに達する情報量には適さない場合があります。インド統計研究所、UNL、およびシンガポール国立大学のコンピューター科学者は、新しいアルゴリズムである CVM を提案しました。長いリスト内のさまざまな項目の計算を近似できます。

See all articles