Heim  >  Artikel  >  Backend-Entwicklung  >  Wie findet man effizient den nächstgelegenen Wert in einem geordneten Array?

Wie findet man effizient den nächstgelegenen Wert in einem geordneten Array?

Barbara Streisand
Barbara StreisandOriginal
2024-11-25 18:06:11192Durchsuche

How to Efficiently Find the Closest Value in an Ordered Array?

Den nächstgelegenen Wert in einem Array finden

Bei der Datenverarbeitung ist es für verschiedene Anwendungen oft wichtig, den am nächsten passenden Wert in einem Array zu finden. Wie können wir bei einem gegebenen Zielwert und einem geordneten Array effizient das Element lokalisieren, das dem Ziel am nächsten liegt?

Lösung:

Um den nächstgelegenen Wert in einem Array zu finden, Wir können jedes Element im Array durchlaufen und die Differenz zwischen dem Zielwert und jedem Element berechnen. Das Element mit der kleinsten Differenz ist der am nächsten kommende Wert. Hier ist eine PHP-Funktion für diese Aufgabe:

function getClosest($search, $arr) {
   $closest = null;
   foreach ($arr as $item) {
      if ($closest === null || abs($search - $closest) > abs($item - $search)) {
         $closest = $item;
      }
   }
   return $closest;
}

Diese Funktion benötigt zwei Parameter: den Zielwert, nach dem gesucht werden soll, und das Zahlenarray, in dem gesucht werden soll. Es berechnet die absolute Differenz zwischen dem Zielwert und jedem Element im Array. Das Element mit der kleinsten absoluten Differenz wird in der Variable $closest gespeichert und letztendlich als Ergebnis zurückgegeben.

Verwendung:

Betrachten Sie das folgende Array:

array(0, 5, 10, 11, 12, 20)

Bei der Suche mit einem Zielwert von 0 gibt die Funktion 0 zurück. Bei einem Zielwert von 3 gibt die Funktion 5 zurück. Ebenso gilt für a Bei einem Zielwert von 14 gibt die Funktion 12 zurück.

Das obige ist der detaillierte Inhalt vonWie findet man effizient den nächstgelegenen Wert in einem geordneten Array?. 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