PHP配列の検索アルゴリズムとは何ですか?どうやって見つけますか?

慕斯
リリース: 2023-03-10 20:10:01
オリジナル
1633 人が閲覧しました

php には多くの検索アルゴリズムがあります。どれを知っていますか?検索アルゴリズムの意味をどのように理解していますか?この記事では、アルゴリズムに関するいくつかの謎を探っていきます。配列内の検索アルゴリズムとは何なのかについて説明しましょう。どうやって見つけますか?

関連する推奨事項: PHP のファサード パターンとは何ですか?彼の強みは何ですか?該当するシナリオは何ですか?

検索アルゴリズム:

検索アルゴリズムの意味:

検索とは、大量の情報の中から特定の情報要素を見つけることです。コンピュータ アプリケーションでは、検索はよく使用される基本操作です。

検索アルゴリズムとは、検索プロセスに対応するコード構造を指します。これは、中規模および大規模な配列内の目的の要素を迅速に見つけることです。 。

逐次検索アルゴリズム:

逐次検索はリサーチ検索とも呼ばれ、データ構造線形テーブルの - 末尾から順にスキャンし、ノードをスキャンします。シーケンス。キーワードが指定された値 k と比較されます。それらが等しい場合、検索は成功します。キーワードが k に等しいノードがスキャンの最後に見つからない場合、検索は失敗します。

コードを例として見てみましょう:

<?php
//查找算法
//顺序查找
$arr = array(1,3,6,8,23,68,100);
//顺序查找:从数组第一个元素开始,挨个匹配
function check_order($arr , $num){
//全部匹配
for($i = 0,$len = count($arr);$i <$len;$i++){
//判断
if($arr[$i] == $num){
return $i;
}
}
return false ;
}
var_dump(check_order($arr,5));
ログイン後にコピー

PHP配列の検索アルゴリズムとは何ですか?どうやって見つけますか?

二分探索アルゴリズム

二分探索には線形テーブルが必要ですノードはキーワード値に従って昇順または降順でリストされます。初期値 k は中間ノードのキーワードと比較するために使用されます。中間ノードは線形テーブルを 2 つのサブテーブルに分割します。それらが等しい場合、検索は成功し、等しくない場合は、k と中間ノードのキーとの比較結果に基づいて、次にどのサブテーブルを検索するかを決定するなど、検索が見つかるか検索が終了して一致するまで再帰的に繰り返されます。テーブル内にそのようなノードがないことがわかりました。

ハーフアルゴリズムのアイデア:

1. 配列の長さを計算します。

2. 左側と右側のポインタの位置を決定します。

3. 中間の位置を見つけます;

4. 一致します。

5. 次に、サイズに応じて境界をリセットします。

<?php
//查找算法
//顺序查找
$arr = array(1,3,6,8,23,68,100);
//顺序查找:从数组第一个元素开始,挨个匹配
function check_order($arr , $num){
//全部匹配
for($i = 0,$len = count($arr);$i <$len;$i++){
//判断
if($arr[$i] == $num){
return $i;
}
}
return false ;
}
//var_dump(check_order($arr,5));
//二分查找算法
//1、 得到数组边界
$right = count($arr);
$left= 0;
$res = 3;
//2、循环匹配,
while($left <=$right){
//3、得到中间位置
$middle = floor(($right + $left) / 2);
//4、匹配数据.
if($arr[$middle] == $res){
  echo $middle;
break;
}
//5、没有找到
if($arr[$middle] < $res){
//值在右边
$left = $middle + 1;
}else{
  //值在左边
  $right = $middle - 1;
ログイン後にコピー

PHP配列の検索アルゴリズムとは何ですか?どうやって見つけますか?

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP配列の検索アルゴリズムとは何ですか?どうやって見つけますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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