Schnellste Möglichkeit, nach einem Element in einem unsortierten Array zu suchen

8

Ich bin heute nur auf diese Frage gestoßen und habe nach einer Lösung gesucht, die besser ist als O (N), aber ich konnte keine Lösung finden.

Gesucht durch SO aber konnte diese Frage nicht finden.

Gibt es eine bessere Lösung als O (n) oder ist es ein Problem, das nicht besser gelöst werden kann?

Mein erster Gedanke war die binäre Suche, aber wieder muss man sie sortieren, was wiederum & gt; n ist. Ich dachte auch daran, Quicksort nur für die Hälfte des Arrays zu verwenden, zu dem das Suchelement gehören könnte, aber wieder machen wir zuerst n Vergleiche und werfen die andere Hälfte erst später weg. Erhalte ich das richtig oder schaue ich die Lösung in eine falsche Richtung?

Ich habe für eine Lösung in C ++ und keine Javascript IndexOf () oder C # Array.find () oder LINQs versucht.

    
Ajai 05.10.2011, 04:45
quelle

4 Antworten

8

Mach es parallel. Teilen Sie das Array in Stücke und suchen Sie parallel. Die Komplexität wird O (n) sein, aber die Laufzeit wird viel kürzer sein. Eigentlich wird es proportional zu nein sein. von Prozessoren, die Sie haben.

Sie können Parallel Patterns Library in C ++ verwenden

    
Muhammad Hasan Khan 05.10.2011, 04:50
quelle
1

Sie haben Recht, der schnellste Weg besteht darin, einfach durch das Array zu iterieren und danach zu suchen. Ohne weitere Informationen gibt es nichts Besseres, was Sie tun können.

Es sei denn, Sie haben einen Quantencomputer , das heißt.

    
Keith Randall 05.10.2011 04:48
quelle
1

Wenn Sie ein Element einmal suchen, durchlaufen Sie es einfach. Keine Möglichkeit, es schneller zu bekommen.

Wenn Sie mehrere Male suchen, lohnt es sich, sie zu indizieren (oder, wenn Sie möchten, zu sortieren) und die folgenden Suchen schnell durchzuführen (log (n)).

    
bdares 05.10.2011 04:49
quelle
0

Wenn es nicht sortiert ist, müssen Sie jedes Element überprüfen.

    
Foo Bah 05.10.2011 04:49
quelle

Tags und Links