At the time of the Lawrence decision in 2003, the penalty for violating a sodomy law varied very widely from jurisdiction to jurisdiction among those states retaining their sodomy laws.

The harshest penalties were in Idaho, where a person convicted of sodomy could receive a death sentence.

invalidating factors-73

while (slot[i] is occupied) and ( slot[i]≠ key ) i = (i 1) modulo num_slots return i function set(key, value) i := find_slot(key) if slot[i] is occupied // we found our key slot[i].value = value return if the table is almost full rebuild the table larger (note 1) i = find_slot(key) slot[i]= key slot[i].value = value Rebuilding the table requires allocating a larger array and recursively using the set operation to insert all the elements of the old array into the new larger array.

It is common to increase the array size exponentially, for example by doubling the old array size.

What causes hash functions to cluster is not well understood, and it is easy to unintentionally write a hash function which causes severe clustering.

The following pseudocode is an implementation of an open addressing hash table with linear probing and single-slot stepping, a common approach that is effective if the hash function is good.

However this eventually requires rebuilding the table simply to remove deleted records.

The methods above provide O(1) updating and removal of existing records, with occasional rebuilding if the high-water mark of the table size grows.

Once the table becomes full, probing algorithms may even fail to terminate.

Even with good hash functions, load factors are normally limited to 80%.

function remove(key) i := find_slot(key) if slot[i] is unoccupied return // key is not in the table j := i loop mark slot[i] as unoccupied r2: (note 2) j := (j 1) modulo num_slots if slot[j] is unoccupied exit loop k := hash(slot[j].key) modulo num_slots // determine if k lies cyclically in (i,j] // | i.k.j | // |....j i.k.| or |.k..j i...| if ( (i For all records in a cluster, there must be no vacant slots between their natural hash position and their current position (else lookups will terminate before finding the record).