Ich habe immer gehört, dass die lineare Suche ein naiver Ansatz ist und die binäre Suche aufgrund der besseren asymptotischen Komplexität leistungsfähiger ist als sie. Aber ich habe nie verstanden, warum es besser ist als eine lineare Suche, wenn vor einer binären Suche eine Sortierung erforderlich ist.
Die lineare Suche ist O(n)
und die binäre Suche ist O(log n)
. Das scheint die Grundlage dafür zu sein, dass die binäre Suche besser ist. Die binäre Suche erfordert jedoch eine Sortierung O(n log n)
nach den besten Algorithmen. Die binäre Suche sollte also eigentlich nicht schneller sein, da sie eine Sortierung erfordert.
Ich lese CLRS, in dem der Autor impliziert, dass es bei der Einfügesortierung besser ist, die Binärsuche zu verwenden, um die Stelle zu finden, an der das Element eingefügt werden muss, anstatt den naiven linearen Suchansatz zu verwenden. In diesem Fall scheint dies gerechtfertigt zu sein, da bei jeder Schleifeniteration eine sortierte Liste vorhanden ist, über die die binäre Suche angewendet werden kann. Aber im allgemeinen Fall, in dem es keine Garantie für den zu durchsuchenden Datensatz gibt, ist die binäre Suche aufgrund von Sortieranforderungen nicht tatsächlich schlechter als die lineare Suche?
Gibt es irgendwelche praktischen Überlegungen, die ich übersehen habe und die die binäre Suche besser machen als die lineare Suche? Oder wird die binäre Suche als besser angesehen als die lineare Suche, ohne die für die Sortierung erforderliche Rechenzeit zu berücksichtigen?