Wie finde ich die nächstliegende Zahl in einer Liste von ganzen Zahlen?

DDD
Freigeben: 2024-11-09 05:11:01
Original
867 Leute haben es durchsucht

How to Find the Closest Number in a List of Integers?

Finden der Zahl, die einem gegebenen Wert in einer Liste von Ganzzahlen am nächsten kommt

Angenommen, wir haben eine Liste von Ganzzahlen und möchten bestimmen, welche Zahl einem gegebenen Wert am nächsten kommt. Wir können verschiedene Methoden anwenden, um dies zu erreichen.

Verwenden der Funktion min() für unsortierte Listen:

Wenn wir nicht garantieren können, dass die Liste sortiert ist, können wir die nutzen integrierte min()-Funktion. Es wählt mithilfe einer Tastenfunktion das Element mit dem minimalen Abstand von der angegebenen Zahl aus.

>>> min(myList, key=lambda x:abs(x-myNumber))
4
Nach dem Login kopieren

Diese Methode findet effizient die nächstliegende Zahl in O(n)-Zeitkomplexität.

Verwendung der Bisektionsmethode für sortierte Listen:

Wenn die Liste bereits sortiert ist oder wir bereit sind, sie einmal zu sortieren, können wir die Bisektionsmethode verwenden. Diese Methode reduziert die Zeitkomplexität auf O(log n). Die Überprüfung, ob die Liste bereits sortiert ist, erfordert jedoch O(n) und die Sortierung selbst erfordert O(n log n).

>>> low, high = 0, len(myList) - 1
>>> while low <= high:
>>>     mid = (low + high) // 2
>>>     if myList[mid] == myNumber:
>>>         return myList[mid]
>>>     elif myList[mid] > myNumber:
>>>         high = mid - 1
>>>     else:
>>>         low = mid + 1
>>>     if low > high:
>>>         closest = myList[high] if abs(myList[high] - myNumber) < abs(myList[low] - myNumber) else myList[low]
>>>         return closest
Nach dem Login kopieren

Durch Auswahl des nächstgelegenen Elements bietet diese Methode eine optimale Lösung für sortierte Listen .

Das obige ist der detaillierte Inhalt vonWie finde ich die nächstliegende Zahl in einer Liste von ganzen Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage