Ich suchte durch die möglichen Arbeitsumgebungen für binäre Suche in Erlang und ich fand http://ruslanspivak.com/2007/08/15/my-erlang-binary-search/ Aber ich fragte mich, ob die Lösung in Blog in O (LG) läuft. Jetzt, da die Wiederholung für die binäre Suche ist: T (n) = T (n/2) + c was mir eine Ausführungszeit von O (lg n) gibt.Binäre Suche in Erlang in lg (n) Zeit
Da Sie in einem C-Array die Möglichkeit haben, auf jedes Element in O (1) -Zeit zuzugreifen. Aber in Erlang, wenn der Zugriff auf die Mitte der Liste dauert cn Zeit, dann läuft die binäre Suche in linearen Gesamtzeit so schlecht wie lineare Suche.
Ich stieß auf Listen: nth/2 BIF für die Suche nach dem n-ten Element in einer Liste, aber ich bin mir nicht sicher über die Ausführungszeit.
Irgendwelche Kommentare?
Dies ist falsch. Das Array-Modul ist ein sehr flacher Tupel-Baum mit einem Verzweigungsfaktor von etwa 12, der als Kompromiss zwischen Wiederbeschreibungszeit und Zugriffszeit ausgewählt wurde. Die Zugriffszeit für ein einzelnes Element ist immer noch O (log N). Destruktive Strukturen wie ETS-Tabellen sollten einen konstanten Zeitzugriff ermöglichen, abhängig von den Daten und dem Typ der Tabelle, aber dies erhöht den Aufwand beim Kopieren zwischen der Tabelle und jedem Erlang-Prozess. Andernfalls kann ein Binärwert ('<<" irgendein_Binär ">>") etwas zulassen, das wie Zeigerarithmetik aussieht, und Tupel haben auch eine O (1) -Komplexität für den Zugriff auf Daten. –