Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie den binären Suchalgorithmus in PHP

So implementieren Sie den binären Suchalgorithmus in PHP

小云云
小云云Original
2017-12-20 10:36:572031Durchsuche

Dieser Artikel stellt hauptsächlich den in PHP implementierten Halbsuchalgorithmus vor, beschreibt kurz das Prinzip der Halbsuche und analysiert die relevanten Betriebsfähigkeiten von PHP unter Verwendung rekursiver und nicht rekursiver Methoden zur Implementierung des Halbsuchalgorithmus im Formular Freunde in Not können sich auf die folgenden Beispiele beziehen und hoffen, dass sie allen helfen können.

Definition: Halbsuchtechnologie, also binäre Suche. Seine Voraussetzung ist, dass die Datensätze in der linearen Tabelle in der Schlüsselreihenfolge vorliegen müssen (normalerweise von groß nach klein) und die lineare Tabelle sequentiell gespeichert werden muss.

Die Grundidee der Halbsuche: Nehmen Sie den mittleren Datensatz als Vergleichsobjekt. Wenn der angegebene Wert das Schlüsselwort des mittleren Datensatzes ist, ist das Schlüsselwort des mittleren Datensatzes gleich, dann ist die Suche erfolgreich; wenn der angegebene Wert kleiner als der Schlüssel des mittleren Datensatzes ist, wird die Suche fortgesetzt. Wenn der angegebene Wert größer als der Schlüssel des mittleren Datensatzes ist, wird die Suche in der rechten Hälfte des mittleren Datensatzes fortgesetzt . Wiederholen Sie den obigen Vorgang, bis die Suche erfolgreich ist oder in allen Suchbereichen kein Datensatz vorhanden ist und die Suche fehlschlägt.

Implementierungscode:


<?php
//递归方式
function bin_recur_search($arr,$val){
  global $time;
  if(count($arr) >= 1){
    $mid = intval(count($arr) / 2);
    $time++;
    if($arr[$mid] == $val){
      return &#39;值为:&#39;.$arr[$mid].&#39;<br>查找次数:&#39;.$time.&#39;<br>&#39;;
    }elseif($arr[$mid] > $val){
      $arr = array_splice($arr,0,$mid);
      return bin_recur_search($arr, $val);
    }else{
      $arr = array_slice($arr,$mid + 1);
      return bin_recur_search($arr, $val);
    }
  }
  return &#39;未找到&#39;.$val;
}
//非递归方式
function bin_search($arr,$val){
  if(count($arr) >= 1){
    $low = 0;
    $high = count($arr);
    $time = 0;
    while($low <= $high){
      $time++;
      $mid = intval(($low + $high)/2);
      if($val == $arr[$mid]){
        return &#39;索引:&#39;.$mid.&#39;<br>值为:&#39;.$arr[$mid].&#39;<br>查找次数:&#39;.$time;
      }elseif($val > $arr[$mid]){
        $low = $mid + 1;
      }else{
        $high = $mid - 1;
      }
    }
  }
  return &#39;未找到&#39;.$val;
}
$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);
echo bin_recur_search($arr, 673);
echo bin_search($arr, 673);
?>

Laufergebnisse:

值为:673
查找次数:4
索引:10
值为:673
查找次数:4

Verwandte Empfehlungen:

Detaillierte Erläuterung von Beispielen für die binäre Suche und die binäre Suche im Java-Algorithmus

Detaillierte Erläuterung der Javascript-Binärsuche_Javascript-Fähigkeiten

Javascript-Halbsuchzeichenposition im Array (geordnete Liste)_Javascript-Kenntnisse

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den binären Suchalgorithmus in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn