Dieser Artikel stellt hauptsächlich den in PHP implementierten binären Suchalgorithmus vor und analysiert die Implementierungstechniken wie Schleifen und Rekursionen in Form von Beispielen allen helfen.
Die binäre Suchmethode erfordert, dass das Array ein geordnetes Array ist.
Angenommen, unser Array ist ein zunehmendes Array, müssen wir zuerst die mittlere Position des Arrays finden.
Eins. Um die Mittelposition zu kennen, müssen Sie die Startposition und die Endposition kennen und dann den Wert der Mittelposition nehmen, um ihn mit unserem Wert zu vergleichen.
Zwei. Wenn der Mittelwert größer als unser angegebener Wert ist, bedeutet dies, dass unser Wert zu diesem Zeitpunkt erneut in zwei Teile geteilt werden muss. Da er vor der Mitte liegt, ist der Wert, den wir ändern müssen Zu diesem Zeitpunkt sollte der Wert der Endposition sein. An diesem Punkt befinden wir uns in der Mitte.
Drei. Wenn andererseits der Mittelwert kleiner als der von uns angegebene Wert ist, bedeutet dies, dass der angegebene Wert nach der Mittelposition liegt. Zu diesem Zeitpunkt muss der Wert des letzten Teils erneut durch zwei geteilt werden, da dies der Fall ist Nach dem Mittelwert ist der Wert, den wir ändern müssen, der Startpositionswert. Der Wert der Startposition zu diesem Zeitpunkt sollte zu diesem Zeitpunkt unsere Mittelposition sein, bis wir den angegebenen Wert finden.
Vier. Oder der Zwischenwert entspricht der anfänglichen Startposition oder der Endposition (in diesem Fall wird der angegebene Wert nicht gefunden). Verwenden wir Code, um ihn zu implementieren ~
//循环实现 function getValue($num,$arr) { //查找数组的中间位置 $length=count($arr); $start=0; $end=$length; $middle=floor(($start+$end)/2); //循环判断 while($start>$end-1) { if($arr[middle]==$num) { return middle+1; }elseif($arr[middle]<$num) { //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 //所以起始位置变成当前的middle的值,end位置不变。 $start=$middle; $middle=floor(($start+$end)/2); }else{ //反之 $end=$middle; $middle=floor(($start+$end)/2); }} return false; }
//循环实现 function getValue($num,$arr) { //查找数组的中间位置 $length=count($arr); $start=0; $end=$length; $middle=floor(($start+$end)/2); //循环判断 while($start>$end-1) { if($arr[middle]==$num) { return middle+1; }elseif($arr[middle]<$num) { //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 //所以起始位置变成当前的middle的值,end位置不变。 $start=$middle; $middle=floor(($start+$end)/2); }else{ //反之 $end=$middle; $middle=floor(($start+$end)/2); }} return false; }
Verwandte Empfehlungen:
Detaillierte Erläuterung der binären Suche und Beispiele für schnelle Sortierung in Python
Beispielcodes für die binäre PHP-Suche für rekursive und nicht rekursive Implementierungen
Detaillierte Erklärung der binären PHP-Suche
Das obige ist der detaillierte Inhalt vonBeispielanalyse eines in PHP implementierten binären Suchalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!