Estou tentando listar complexidades de tempo de operações de estruturas de dados comuns, como Arrays, árvore de pesquisa binária, heap, lista vinculada, etc. e, especialmente, estou me referindo a Java. Eles são muito comuns, mas acho que alguns de nós não estão 100% confiantes sobre a resposta exata. Qualquer ajuda, especialmente referências, é muito apreciada.
Por exemplo, para lista vinculada individualmente: Alterar um elemento interno é O (1). Como você pode fazer isso? Você TEM que pesquisar o elemento antes de alterá-lo. Além disso, para o vetor, adicionar um elemento interno é dado como O (n). Mas por que não podemos fazer isso em tempo constante amortizado usando o índice? Por favor, me corrija se eu estiver faltando alguma coisa.
Estou postando minhas descobertas / suposições como a primeira resposta.
fonte
Respostas:
Arrays
Delete
operação disponível em Arrays. Podemos excluir simbolicamente um elemento definindo-o para algum valor específico, por exemplo, -1, 0, etc., dependendo de nossos requisitosInsert
para matrizes é basicamenteSet
como mencionado no inícioArrayList:
Lista vinculada:
Lista duplamente vinculada:
Pilha:
Queue / Deque / Circular Queue:
Árvore de pesquisa binária:
Árvore Vermelho-Preto:
Heap / PriorityQueue (min / max):
HashMap / Hashtable / HashSet:
fonte