Ich verstehe, dass die Binary Suche effizienter als die Linear Suche in einer ist sortierte Liste und eine große Liste, aber was ist, wenn wir eine große Liste haben aber nicht sortiert, die eine wir lineare Suche verwenden oder binäre Suche?Binäre Suche oder lineare Suche in großen unsortierten Listen?
Antwort
Das Konzept der binäre Suche kann nur auf sortierten Eingaben arbeiten. Recherchiere einfach wie es funktioniert: Binary search at Wikipedia.
Basierend auf Ihre ursprüngliche Frage „binäre Suche oder lineare Suche auf unsortierten Listen?“ die Antwort ist eindeutig lineare Suche weil binäre Suche nicht verwendet werden kann.
Allerdings könnte es möglich sein, dass Sie mindestens einige Kenntnisse der Eingangsstruktur haben? Wenn ja könnte Sie das verwenden, um eine bessere Lösung zu erstellen. Wenn es völlig zufällig ist, dann ist die lineare Suche offensichtlich die beste. Aber Sie könnten die Suche leicht parallelisieren, wie hier zu sehen: Fastest way to search for an element in unsorted array.
Lassen Sie mich Ihnen einen kleinen Überblick für die binäre Suche geben. Ich wähle eine Zufallszahl zwischen 1 und 100. Sie können jetzt die Nummer erraten und ich werde Ihnen sagen, ob meine Nummer niedriger, gleich oder größer als Ihre Schätzung ist.
Binary Suche würde jetzt denke, die Hälfte des Suchintervalls, . Ich antworte die Vermutung ist zu hoch. Das Suchintervall ist jetzt von 1 bis 49 und die binäre Suche geht jetzt für . Es wiederholt die Suche, bis das Element gefunden wurde.
Wenn Sie Ihre Eingabe ist unsortiert dann wird dies, weil nicht mehr funktionieren, wenn ich Ihnen sagen, dass mein Element niedriger als ist dann bedeutet dies nicht zwangsläufig bedeuten, dass es zu 50 links gespeichert ist, es könnte auch auf der rechten Seite sein, weil der Eingang unsortiert ist.
Hier ist ein Bild, das das Algorithmus (durch eine schnelle Google-Suche gefunden):
Danke, dass es wirklich geholfen hat – none
In diesem Fall Linear Search wird effizienter sein, weil seine Komplexität O(n)
ist.
Aber für binäre Suche das Array muss sortiert sein. Zum Sortieren der besten Komplexität wird O(nlogn)
, und die Suche in O(logn)
, die, wenn hinzugefügt, gibt O(nlogn)
.
Also, klar Lineare Suche ist hier besser.
Binärsuche per Definition nur für sortierte Sequenzen. Voraussetzung ist, dass die Liste, nach der Sie suchen, sortiert wird, da sonst die Binärsuche überhaupt nicht funktioniert.
So Sie die Frage zu beantworten: Auf unsortierten Reihenfolge lineare Suche ist der Weg
Aber im Auge behalten zu gehen, dass, wenn Sie eine Reihe ausführen müssen (sagen M) sucht dann könnte es Es ist gut, die Liste einmal zu sortieren und dann die Binärsuche zu verwenden.
Stellen Sie sich vor, Sie müssen M
Suchen auf einem Array der Länge N
durchführen. -
- Mit lineare Suche kosten würde
N*M
(M durchsucht jede Kalkulation N). - Sortierung + binäre Suche
O((N log N)+(log N)*M)
kosten würde ->(N Log N)
zum Sortieren der Liste plusM
sucht jedeLog N
kostet
Wann ist es bequem, die ehemalige und als dieser? wenn N*M >N log N+(log N)*M
.
Ich mag, dass Sie das Szenario erwähnt, wo man mehrmals am selben Eingang suchen muss. – Zabuza
- 1. Ein Suchalgorithmus, der lineare Suche und binäre Suche kombiniert
- 2. Was ist schneller: Mit Quicksort dann binäre Suche oder nur lineare Suche?
- 3. Binäre Suche Baum String Suche
- 4. Lineare Suche - Python
- 5. C# Array Lineare Suche
- 6. Rekursive lineare Suche
- 7. Dynamische binäre Suche
- 8. Geschachtelte binäre Suche Java
- 9. binäre Suche Terminierungsbedingung
- 10. Erweiterte binäre Suche
- 11. Binäre Suche Seg Fehler
- 12. Binäre Suche Tree Traversals
- 13. binäre Suche Bäume in Ruby
- 14. Binäre Suche eines Wortes
- 15. Binäre Suche Bäume
- 16. Binäre Suche Bäume C++
- 17. Binäre Suche mit Python
- 18. Java binäre Suche Wortbaum
- 19. löschen binäre Suche Baum
- 20. Verständnis binäre Suche Bug
- 21. rekursive binäre Suche/C
- 22. Binäre Suche C++ STL
- 23. Binäre Suche Baumsegmentierungsfehler
- 24. Binäre Suche Eingabe Endlosschleife
- 25. binäre Suche Baum
- 26. Binäre Suche in Objekten implementieren
- 27. Binäre Suche in MIPS-Assembly
- 28. Generische binäre Suche in C#
- 29. C# Suche in Listen
- 30. Zeiger in binäre Suche Baumeinfügungen und Suche in C
https://en.wikipedia.org/wiki/Binary_search_algorithm –
In diesem Fall ist die Verwendung der binären Suche sinnlos. Die Antwort lautet also lineare Suche. –
Wolltest du fragen: "Wenn wir eine große unsortierte Liste hätten, wäre es effizienter, die Liste zu sortieren und dann eine binäre Suche durchzuführen oder einfach eine lineare Suche zu verwenden?". In diesem Fall wäre eine lineare Suche besser. –