Na pior das hipóteses, se você armazenar apenas elementos com os mesmos valores de hash, uma tabela de hash armazenará todos os elementos no mesmo bucket. Se você usar listas para armazenar os elementos de um bucket, a pesquisa será no pior caso (onde é o número de elementos na tabela - geralmente, é o número de elementos no maior bucket), porque você precisa percorrer a lista inteira se estiver procurando um elemento que não esteja na tabela. A pesquisa positiva (onde você sabe que o elemento está presente) tem a mesma complexidade: você precisa de se estiver pesquisando o último elemento da lista. A exclusão tem a mesma complexidade (você precisa deO(n)nnn−1=Θ(n)n−1pesquisas se você estiver excluindo o último elemento). A inserção também é se você precisar verificar um elemento existente ou se você permitir duplicatas (nesse caso, você pode inserir o elemento no início da lista).O(n)O(1)
Com as árvores de pesquisa binária balanceada , a complexidade do pior caso é reduzida para , porque a profundidade de uma árvore de pesquisa balanceada cresce logaritmicamente no tamanho da árvore, por definição de balanceamento.O(logn)
Com uma distribuição média de dados, os elementos são espalhados por diferentes buckets e há poucas colisões, portanto, a complexidade é próxima de independentemente da estrutura de dados usada em caso de colisão.O(1)
Com pesquisas aleatórias em uma distribuição de dados escolhida pelo adversário na qual todos os elementos estão no mesmo bloco, o comprimento médio da lista que deve ser percorrida é , portanto, a complexidade média da pesquisa nessa situação é . Com uma árvore, a média é , como no pior caso.nn/2Θ(n)Θ(logn)