QUADRATIC_PROBING
Wed May 29 2024 13:00:43 GMT+0000 (Coordinated Universal Time)
Saved by @signup
import java.util.*;
public class QuadraticProbing<T>
{
private static final int DEFAULT_TABLE_SIZE = 101;
private HashEntry<T>[] array;
private int currentSize;
public QuadraticProbing()
{ this(DEFAULT_TABLE_SIZE); }
public QuadraticProbing(int size)
{ array = new HashEntry[size];
makeEmpty();
}
public void makeEmpty()
{ currentSize = 0;
for(int i=0; i<array.length; i++)
array[i] = null;
}
public boolean contains(T element)
{
int currentPos = findPos(element);
return isActive(currentPos);
}
private int findPos(T element)
{
int offset = 1;
int currentPos = myhash(element);
while(array[currentPos]!=null&&!array[currentPos].element.equals(element))
{
currentPos += offset;
offset += 2;
if(currentPos>=array.length)
currentPos -= array.length;
}
return currentPos;
}
private boolean isActive(int currentPos)
{
return array[currentPos]!=null && array[currentPos].isActive;
}
public void insert(T element)
{
int currentPos = findPos(element);
if(isActive(currentPos))
return;
array[currentPos] = new HashEntry<>(element, true);
}
public void remove(T element)
{
int currentPos = findPos(element);
if(isActive(currentPos))
array[currentPos].isActive = false;
}
private int myhash(T element)
{
int hashValue = element.hashCode();
hashValue %= array.length;
if(hashValue < 0)
hashValue += array.length;
return hashValue;
}
private static class HashEntry<T>
{
public T element;
public boolean isActive;
public HashEntry(T e)
{ this(e, true); }
public HashEntry(T e, boolean i)
{ element = e; isActive = i; }
public T getElement(){ return this.element; }
}
public void showAll()
{ for(HashEntry each: array)
if(each != null)
System.out.print(each.getElement()+" ");
else
System.out.print("None ");
}
public static void main(String[] args)
{
QuadraticProbing<Integer> sc = new QuadraticProbing(10);
sc.insert(89); sc.insert(18); sc.insert(49); sc.insert(58); sc.insert(69);
sc.showAll();
}
}



Comments