雜湊(hash 之 開放位址法(poj)

2021-06-25 10:24:58 字數 709 閱讀 7547

#include #includeusing namespace std;

const int size=20345677;

const int m=1000000000;

const int key=1357;

typedef struct hash

hash;

hash hash[size];

// 線性探測再雜湊,為啥全部加m呢,因為 n 可能為-2 的28次方

void insert(int n)

把關鍵字從非自然數轉化為自然數n,字串的一般用elfhash()更搞笑;

開放位址法是將所有的元素都放在雜湊表中,裝載因子絕對不會超過1.

int t=n;

n=(n+m)%size;

while(hash[n].val!=m&&hash[n].val!=t)

hash[n].val=t;

hash[n].cp++;

}int search(int n)

if(hash[n].val==m) return 0;

else return hash[n].cp;

}int main()

for(i=0;ifor(i=0;ifor(j=0;jfor(i=0;ifor(j=0;jprintf("%d\n",z);

return 0;

}

Hash 開放位址法

include define n 100005 int check n int main int n,num scanf d d n,num for int i 0 itime limit 1000ms memory limit 65536kb submit statistic discuss pr...

雜湊表 開放位址法

雜湊表的查詢過程和建表過程相似。假設給定的值為k,根據建表時設定的雜湊函式h,計算出雜湊位址h k 若表中該位址單元為空,則查詢失敗 否則將該位址中的結點與給定值k比較。若相等則查詢成功,否則按建表時設定的處理衝突的方法找下乙個位址。如此反覆下去,直到某個位址單元為空 查詢失敗 或者關鍵字比較相等 ...

雜湊表 開放位址法之線性探測

雜湊表 優點 速度快 插入和查詢 缺點 基於陣列,不能有序的遍歷 鍵值對儲存方式,通過鍵來訪問值 hashmap.put key value 線性探測屬於開放位址法 線性探測插入演示 陣列最初狀態 在這組資料中要插入83 先對要插入資料雜湊化,雜湊化後的資料就是陣列下標,這裡雜湊化後的資料是23 然...