Mi chiedevo qual è il tempo di esecuzione del metodo add(index,E)
di java ArrayList
. Secondo lo javadoc il tempo di esecuzione per l'operazione di aggiunta è ammortizzato O(1)
. Ma nella descrizione di add(index,E) lo dice.qual è il tempo di esecuzione per l'inserimento di un elemento in qualche indice di arrayList?
Inserisce l'elemento specificato nella posizione specificata in questo elenco. Sposta l'elemento attualmente in quella posizione (se presente) e qualsiasi elemento successivo a a destra (ne aggiunge uno ai rispettivi indici).
Quindi sembra O(N)
. Mi stavo chiedendo per cosa dovremmo negoziare, se il tempo necessario per eseguire questa operazione era O(1)
. C'è qualche lavoro di ammortamento che può essere fatto per rendere questa operazione O(1)
e sacrificare il tempo di esecuzione per qualche altra operazione?
Ho letto che java ArrayList
è supportato da matrici, cambierebbe la struttura della struttura di aiuto?
[regolare add] (http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#add (E)) è ammortizzato O (1), [aggiungi all'indice ] (http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#add%28int,%20E%29) è ammortizzato O (N) –