Dieser Artikel stellt hauptsächlich den in PHP implementierten binären Suchalgorithmus vor und analysiert die Prinzipien des binären Suchalgorithmus und Implementierungstechniken wie Schleifen und Rekursionen in Form von Beispielen
Die Beispiele in diesem Artikel beschreiben den in PHP implementierten binären Suchalgorithmus. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Die binäre Suchmethode erfordert, dass das Array ein geordnetes Array ist
Angenommen, unser Array ist ein zunehmendes Array, zuerst benötigen wir um die Mitte des Arrays zu 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. Im Gegenteil, wenn 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 er danach liegt Der mittlere Wert, also der Wert, den wir ändern müssen, ist der Startpositionswert. Der Wert der Startposition zu diesem Zeitpunkt sollte zu diesem Zeitpunkt unsere mittlere Position 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; }
Half In PHP implementierter Suchalgorithmus Beispielerklärung
Beispiel für einen von PHP implementierten String-Matching-Algorithmus
Beispielerklärung des Maximums Von PHP implementierter Forward-Matching-Algorithmus
Das obige ist der detaillierte Inhalt vonBeispielanalyse und Erklärung des in PHP implementierten binären Suchalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!