Heim  >  Artikel  >  Backend-Entwicklung  >  Tutorial zur PHP-Binärmethode zur Implementierung der Array-Suchfunktion

Tutorial zur PHP-Binärmethode zur Implementierung der Array-Suchfunktion

小云云
小云云Original
2017-12-13 10:14:401444Durchsuche

Dichotomie. Verwenden Sie die While-Schleifenmethode bzw. die rekursive Aufrufmethode. In diesem Artikel wird hauptsächlich PHP zur Implementierung der Array-Suchfunktion basierend auf der Binärmethode vorgestellt und die zugehörigen Implementierungstechniken der While-Schleife und des rekursiven Aufrufalgorithmus zur Implementierung der Binärsuchfunktion in Form von Beispielen analysiert . Ich hoffe, es kann allen helfen.

<?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:

Verwandte Empfehlungen:

Einführung in die binäre Suche,

Einführung, wie JavaScript die binäre Suche verwendet, um Daten zu finden

Einführung in die binäre Suche und detaillierte Beispiele

Das obige ist der detaillierte Inhalt vonTutorial zur PHP-Binärmethode zur Implementierung der Array-Suchfunktion. 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