2010-08-25 6 views
9

Was die Kosten/Komplexität eines String.IndexOf() FunktionsaufrufWas ist die Kosten/Komplexität eines String.IndexOf() Funktionsaufruf

+1

In welcher Sprache und im Vergleich zu was? Was sind die Argumente der Funktion - braucht es eine Zeichenfolge, ein Zeichen, einen benutzerdefinierten Vergleich? – Kobi

+0

Ist es Java, von dem du sprichst? – NullUserException

+0

duplicate of http://stackoverflow.com/questions/12752274/java-indexofstring-str-method-complexity –

Antwort

0

in Java ist, wenn der Anruf string1.indexOf (string2) die Zeitkosten wären O (m - n), wobei m die Länge von string1 und n die Länge von string2 ist.

9

IIRC Java-Implementierung von .indexOf() ist nur die naive string matching algorithm, das ist O(n+m) Durchschnitt und O(n*m) schlimmster Fall.

In der Praxis ist das schnell genug; Ich testete es für relativ große Nadel (> 500 Char) und Heuhaufen (einige MB) Saiten und es würde die Anpassung in unter einer Sekunde (in einem durchschnittlichen Haushaltscomputer) tun. Wohlgemerkt, ich habe es gezwungen, durch den ganzen Heuhaufen zu gehen.

+0

Ich weiß, es ist lange her, aber wissen Sie, woher Sie das haben? Ich würde diese Informationen für meine Bachelor-Thesis brauchen und ich weiß nicht, ob Stackoverflow eine akzeptable Referenz für eine Dissertation wäre;) – odaa

+0

@odaa Ich habe ein paar Experimente gemacht und ein Papier darüber geschrieben, als ich am College war. – NullUserException

+0

@NullUserException, Warum sagen Sie, dass 'O (n + m)' der durchschnittliche Fall ist? http://stackoverflow.com/a/12752295/632951 scheint diesem Punkt zu widersprechen. – Pacerier

0

Hängt von der Implementierung ab.

Wenn Sie beispielsweise nach einer Zeichenfolge innerhalb einer längeren Zeichenfolge suchen, benötigt der Turbo Boyer-Moore-Algorithmus eine zusätzliche konstante Menge an Speicherplatz, um eine Suche innerhalb von 2n Vergleichen (im Gegensatz zu 3n für Boyer-Moore) durchzuführen n ist die Anzahl der Zeichen im zu suchenden Text. " (siehe Wikipedia).

+1

@caleb: Wirklich, wie kannst du von der Frage erzählen? –

Verwandte Themen