/*
* 平方探測採用原雜湊值加整數平方作為備選位置避免了一次聚集
* 會產生二次聚集,在備選位置上聚集
* 裝填因子不能大於0.5,即至少有一半為空且表大小為素數才能保證插入元素總能成功
*/public class quadraticprobinghashtable()
public quadraticprobinghashtable(int size)
private static class hashentry
public hashentry(anytype x,boolean i)
}private static final int default_table_size=11;
private hashentry array;
public void makeempty()
/**刪除只是將元素標記為刪除
*/ public void remove(anytype x)
private allocatearray(int arraysize)
/** hashentry引用陣列有三種情況
* 1null
* 2非null,該項是活動的(isactive=true)
* 3非null,該項標記w為刪除(isactive=false)
*/ private boolean isactive(int currentsize)
private int findpos(anytype x)
return currentpos;
}private int myhash(anytype x)
return hashval;}/*
*平方探測再雜湊
*/ private void rehash()}}
/**@return 包括n在內的之後的第乙個素數
*/ private static int nextprime(int n)
return n;
} /*
*素數判斷
*/ private static boolean isprime(int n)
}return true;
}}
平方探測法處理雜湊函式衝突
平方探測法是一種較好的處理衝突的方法,可以避免出現 堆積 問題,它的缺點是不能探測到雜湊表上的所有單元,但至少能探測到一半單元。下面通過乙個例子來理解 設hash函式為 h key key mod 7,雜湊表的位址空間為0,1,10,開始時雜湊表為空,用平方探測法解決衝突,畫出依次插入鍵值9,14,...
雜湊查詢(雜湊表建立及平方探測)
編譯處理時,涉及變數及屬性的管理 插入 新變數的定義 查詢 變數的引用 順序查詢 o n 二分查詢 o logn 二叉樹查詢o h 平衡二叉樹 o logn 如何快速查詢?查詢的本質 已知物件找位置 有序的安排物件 全序 順序查詢 半序 二叉樹 直接算出位置 雜湊查詢 雜湊查詢 1.計算位置。2.解...
平方探測法hash
time limit 400ms memory limit 65536kb problem description 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i ...