L'approccio sopra menzionato richiede che ogni cella sia in grado di contenere un numero abbastanza grande da contenere il numero di volte in cui l'array potrebbe dover essere reinizializzato, il che è una sostanziale penalità di spazio. Se uno slot è in grado di contenere almeno un valore che non sarà mai scritto in modo legittimo, si può evitare di avere qualsiasi altra penalità di spazio (non costante) a scapito dell'aggiunta di una O(Wlg(N))
penalità di tempo, dove W
è il numero di slot di array distinti scritti tra operazioni di cancellazione ed N
è la dimensione dell'array. Ad esempio, supponiamo che uno memorizzi numeri interi da -2.147.483.647 a 2.147.483.647 (ma mai -2.147.483.648) e che si desideri che gli elementi di array vuoti vengano letti come zero. Inizia riempiendo l'array con -2.147.483.648 (chiama quel valoreB
). Durante la lettura di uno slot di array per l'applicazione, segnalare un valore pari B
a zero. Prima di scrivere scanalatura matrice I
, controlla se si tiene B
in caso affermativo ed I
è maggiore di uno, memorizzare uno zero a fessura I/4
dopo aver eseguito un controllo simile a quella posizione (e, se ritenuto B
, I/16
ecc).
Per cancellare l'array, iniziare con I
uguale a 0 o 1, a seconda della base dell'array (l'algoritmo come descritto funzionerà per entrambi). Quindi ripetere la seguente procedura: Se l'elemento I
è B
, incrementare I
e, in tal caso, si ottiene un multiplo di quattro, dividere per quattro (terminare se la divisione produce un valore di 1); in caso I
contrario B
, archiviare B
lì e moltiplicare I
per quattro (se I
inizia da zero, la moltiplicazione per quattro lo lascerà zero, ma poiché l'articolo 0 sarà vuoto, I
verrà incrementato).
Si noti che si potrebbe sostituire la costante "quattro" sopra con altri numeri, con valori più grandi che generalmente richiedono meno tag di lavoro, ma valori più piccoli generalmente richiedono meno schiarimenti di lavoro; poiché gli slot di array che sono etichettati devono essere cancellati, un valore di tre o quattro è quasi sicuramente ottimale; poiché il valore quattro è sicuramente vicino all'ottimale, è migliore di due o otto ed è più conveniente di qualsiasi altro numero, sembrerebbe la scelta più ragionevole.