Was ist die Zeit-Komplexität von StringBuilder.append() in java?
Ein Programm mit dem ich arbeite, wandelt ein Integer-array zu einem string mittels string-builder. Ich bin versucht zu bestimmen, die Zeit, die Komplexität dieses Ansatzes.
- Was genau meinst du mit "Wirkungsgrad"? Was ist das Kriterium, die Sie versuchen zu optimieren?
- Es ist auch darauf hinzuweisen, dass Sie brauchen, um zu definieren Effizienz ein Ansatz als mit Bezug auf andere Ansatz möglich. Wie, es nimmt große Mengen von Kraftstoff zum Start eines Satelliten in den orbit, es ist nicht sehr effizient (wie bei Strom sinnvoll verbraucht), aber in Ermangelung einer alternative, die "ineffiziente" - Ansatz ist alles, was Sie tun können, damit die Ineffizienz weitgehend irrelevant ist. Also, was ist Ihre alternative zur string-generator?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Check out: https://stackoverflow.com/a/7156703/7294647
Grundsätzlich, es ist nicht klar, was die Zeit-Komplexität ist für
StringBuilder#append
wie es hängt von Ihrer Implementierung, so sollten Sie nicht haben, um über sorgen es.Könnte es eine effizientere Art der Annäherung an Ihre int[]-String-Konvertierung je nach dem, was man eigentlich versucht zu erreichen.
Wenn die
StringBuilder
braucht, um seine Kapazität zu erhöhen, beinhaltet das kopieren der gesamten Zeichen-Arrays zu einem neuen array. Sie können dies vermeiden, indem Sie zunächst die Einstellung der Kapazität, so dass Sie nicht haben, um dies zu tun. (Dies sollte einfach sein, da Sie wissen, die Länge derint
array und die maximale Anzahl der Zeichen in derString
Darstellung einesint
.)Wenn Sie vermeiden, die Notwendigkeit, die Kapazität zu erhöhen, die Komplexität scheint nur O(n). Wenn Sie hängen, sind Sie nur kopieren der Zeichen-array aus der
String
an das Ende der Zeichen-array in derStringBuilder
.(Ja, es hängt von der Implementierung, aber es wäre eine ziemlich schlechte Implementierung von
StringBuilder
ob es nicht Anhängen, in O(n) Zeit.)LinkedList
für O(1) Anhängen.