Utilizzare una tabella hash con open addressing. Mantenere il fattore di carico tra α e β rimodellando se necessario. Per evitare oscillazioni, eseguire nuovamente il cambio su un valore compreso tra α e β. La maggior parte delle implementazioni di schemi di hash aperti richiedono che la tabella sia di dimensioni convenienti, come una potenza di due o un numero primo. I valori tipici di α e β potrebbero essere 0,25 e 0,75, con il fattore di carico di destinazione pari a 0,5.
Le tabelle di hash aperte sono le ricerche O (1) a meno che il fattore di carico non si avvicini a 1 e il ridimensionamento esponenziale sia ammortizzato O (1), quindi inserire è ammortizzato O (1). Il modo più semplice per gestire l'eliminazione è lazy-delete: gli elementi eliminati sono contrassegnati come eliminati ma non rimossi, quindi possono essere sovrascritti durante un inserimento. Di nuovo, il ridimensionamento esponenziale viene ammortizzato O (1) e l'operazione di eliminazione stessa dipende solo da una ricerca.
La selezione casuale ignora del tutto il meccanismo di hashing e prende solo pugnalate casuali nell'array sottostante fino a quando non trova un record non cancellato. Poiché il fattore di carico è almeno α, il numero previsto di punti di stabilizzazione è al massimo 1/α, nuovamente O (1).
L'aggiunta alla fine di un array non è o (1) – jozefg
Ammortizzato, lo è. – irrelephant
cosa succede se i numeri non sono univoci? –