Yukarıda adı geçen yaklaşım, her hücrenin, dizinin kaç kez yeniden başlatılması gerektiğini tutacak kadar büyük bir sayı tutabilmesini gerektirir; bu, önemli bir alan cezasıdır. Bir yuva hiçbir zaman meşru olarak yazılmayacak en az bir değer tutabilirse, bir O(Wlg(N))
zaman cezası eklemek pahasına başka (sabit olmayan) bir boşluk cezası kullanmaktan kaçınılabilir , burada arasındaki farklı dizi yuvalarının W
sayısı temizleme işlemleri ve dizi boyutudur. Örneğin, birinin -2,147,483,647 ile 2,147,483,647 arasındaki tam sayıları depolayacağını (ancak asla -2,147,483,648) tamsayı depolayacağını ve boş dizi öğelerinin sıfır olarak okunmasını istediğinizi varsayalım. Diziyi -2.147.483.648 ile doldurarak başlayın (bu değeri arayınN
B
). Uygulama için bir dizi yuvası okurken, değeri B
sıfır olarak bildirin. Dizi yuvası yazmadan önce I
, bu tutulan kontrol B
ve bu durumda ve I
birden büyük, yuvaya bir sıfır depolamak olan I/4
(bu tutulursa, ve bu konum için de benzer bir kontrol yaptıktan sonra B
, I/16
vs.).
Diziyi temizlemek için I
, dizi tabanına bağlı olarak 0 veya 1'e eşit olarak başlayın (açıklanan algoritma her ikisi için de çalışır). Daha sonra aşağıdaki prosedürü tekrarlayın: Öğe I
ise B
, artırılırsa I
ve eğer bunu dörtten bir kat verirse, dörde bölün (bölme 1 değerini verirse sonlandırın); öğe I
yoksa B
, B
orada saklayın ve I
dört ile çarpın ( I
sıfırdan başlarsa, dört ile çarpmak sıfır bırakır, ancak 0 öğesi boş I
olacağından, artırılır).
Yukarıdaki "dört" sabitinin diğer sayılarla değiştirilebileceğini, daha büyük değerlerin genellikle daha az iş etiketlemesi gerektirdiğini, ancak daha küçük değerlerin genellikle daha az iş temizliği gerektirdiğini unutmayın; etiketli dizi yuvalarının temizlenmesi gerektiğinden, üç veya dört değeri neredeyse kesinlikle en uygunudur; Dört değer kesinlikle optimale yakın olduğu için, iki veya sekizden daha iyi olduğu ve diğer herhangi bir sayıdan daha uygun olduğu için, en makul seçim gibi görünecektir.