Heim >Backend-Entwicklung >PHP-Tutorial >Beispiel einer PHP-Implementierung einer Array-Suchfunktion basierend auf Dichotomie [Schleife und rekursiver Algorithmus] _php-Kenntnisse

Beispiel einer PHP-Implementierung einer Array-Suchfunktion basierend auf Dichotomie [Schleife und rekursiver Algorithmus] _php-Kenntnisse

韦小宝
韦小宝Original
2017-12-15 10:07:591449Durchsuche

In diesem Artikel wird hauptsächlich PHP vorgestellt, um die Array-Suchfunktion basierend auf der Bisektion-Methode zu implementieren, und die While-Schleife und die RekursionAufrufen des Algorithmus zur Implementierung der Bisektion Freunde, die ihn benötigen, können sich auf diesen Artikel beziehen, wie PHP die Array-Suchfunktion basierend auf dem Halbierungsmethode. Die Details sind wie folgt: Dichotomie. Verwenden Sie die While-Schleifenmethode bzw. die rekursive Aufrufmethode.


<?php
// 二分法的使用数组必须是有序的,或升序,或降序
$arr = array(
  1, 3, 5, 7, 9, 13
);
// 递归调用(相比较好理解
function bsearch_r($v, $arr, $low, $high){
  if ($low > $high) {// 先判断结束条件
    return -1;
  }
  $i = intval(($high + $low)/2);
  if ($arr[$i] > $v){
    return bsearch_r($v, $arr, $low, $i-1);// 递归
  } else if ($arr[$i] < $v){
    return bsearch_r($v, $arr, $i+1, $high);
  } else {
    return $i;
  }
}
echo bsearch_r(1, $arr, 0, count($arr)-1);// 0
echo &#39;<hr/>&#39;;
echo bsearch_r(14, $arr, 0, count($arr)-1);// -1
echo &#39;<hr/>&#39;;
// while循环
function bsearch($v, $arr){
  $low = 0;
  $high = count($arr)-1;// 使用下标,注意减去1
  // 注意凡是使用到while的时候,一定要防备无限循环的时候,注意终止循环的判断。
  while($low <= $high){// 比如$low<=$high,这个等于号必须有。
    $i = intval(($high + $low)/2);
    if ($arr[$i] > $v){
      $high = $i-1;
    } else if ($arr[$i] < $v){
      $low = $i+1;
    } else {
      return $i;
    }
  }
  return -1;// 找不到的时候返回-1
}
echo bsearch(13, $arr);// 5
echo &#39;<hr/>&#39;;
echo bsearch(14, $arr);// -1


Laufergebnisse:

Das ist alles für diesen Artikel Inhalt, ich hoffe, es kann Ihnen helfen! !

Verwandte Empfehlungen:

PHP-Einzeldatei und mehrere Datei-UploadBeispiel_php-Beispiel

Wie PHP den Naive-Bayes-Algorithmus für maschinelles Lernen implementiert

PHP implementiert die Fibonacci-Sequenzmethode

Das obige ist der detaillierte Inhalt vonBeispiel einer PHP-Implementierung einer Array-Suchfunktion basierend auf Dichotomie [Schleife und rekursiver Algorithmus] _php-Kenntnisse. 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