Entsprechend dem Wikipedia-Artikel auf dynamic arrays, Einfügen/Löschen am Ende des Arrays ist O (1) beim Einfügen/Löschen von der Mitte ist O (n). Warum genau ist das?Warum ist das Einfügen am Ende eines dynamischen Arrays O (1) beim Einfügen in der Mitte O (n)?
Auch - wenn ich ein dynamisches Array mit 5 Elementen habe und ein neues Element an Position 6 einfügen, ist die Operation O (n), wenn ich die Funktion an das Ende des Arrays angehängt habe, ist O (1). Ist dies nicht dieselbe Operation, wenn das Array nicht in beiden Fällen neu skaliert werden muss? Oder fügt das Anfügen an das dynamische Array das neue Element wirklich neben Position 6 ein?
Danke!
EDIT: Ich denke, meine Haupt Verwirrung ist der Unterschied zwischen dem Einfügen am Ende des Arrays und Einfügen an einer bestimmten Position, die dem Ende des Arrays entspricht.
Ich nehme an, ein Zeiger auf die Speicheradresse des Endes des Arrays wird griffbereit gehalten, und deshalb ist die Append-Operation schnell. Umgekehrt, wenn ich eine genaue Position (selbst wenn es das Ende des Arrays ist) angeben, wird es nicht wissen, dass das Einfügen an dieser Position ist gleichbedeutend mit der oben genannten Speicheradresse, so dass es das gesamte Array durchlaufen muss, wie?
Wie bei Ihrer Bearbeitung, hängt es wieder von der Implementierung ab. Sie könnten sehr gut ein dynamisches Array erstellen, das intelligent genug ist, um zu wissen, dass Insert (bound-1) dasselbe ist wie Add. –
Hmm ... mir ist klar, dass ich hier in einem Beitrag 2 relativ unterschiedliche Fragen gestellt habe. Adam Robinson gab eine gute Antwort und Pax gab der anderen eine größere Antwort. Irgendein Konsens darüber, was die akzeptierte Antwort sein sollte ??? –
Sie fragen eine voreingenommene Gruppe;) Wählen Sie die, die eine hilfreichere Antwort gibt. –