雜湊表查詢 拉鍊法

2021-08-10 01:43:00 字數 821 閱讀 3761

雜湊查詢(雜湊查詢)

雜湊的第一步是使用雜湊函式將鍵對映成索引

1)除留取餘法(最常用的):特點是容易造成堆積,產生衝突

2)特徵值

3)字元型別的

在查詢中陣列的特點是定址容易,插入和刪除困難,鍊錶則相反

雜湊表將二者的特點綜合。

雜湊表建表:通過某種關係轉換,使關鍵字適度的分散到制定大小的順序結構中,越分散,以後查詢的時間複雜度就越小,相反空間複雜度就會越大。

拉鍊法解決雜湊衝突:(時間複雜度幾乎為o(1))

h(k)=k%p;

理論研究證明,p取小於雜湊表長度的素數時效果最好。

**實現建表與查詢:

//節點資料結構定義

typedef struct node

node;

typedef struct

hash;

//插入及建表演算法h(k)=k%p;

void insert(hash ha,int cnt,int p,int k)

cnt++;//雜湊表中總結點加1

}void create(hash ha,int cnt,int m,int p,int key,int n)

if(p!=null)

printf("查詢成功,關鍵字%d,比較%d次。\n",k,i);

else

printf("查詢失敗。\n");

}

2.開放定址

雜湊表(拉鍊法)

開雜湊法又叫鏈位址法 開鏈法 開雜湊法 首先對關鍵碼集合用雜湊函式計算雜湊位址,具有相同位址的關鍵碼歸於同一子集合,每乙個子集合稱為乙個桶,各個 桶中的元素通過乙個單鏈表鏈結起來,各鍊錶的頭結點儲存在雜湊表中。設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大...

雜湊錶開雜湊法(拉鍊法)

開雜湊法又叫鏈位址法 開鏈法 設元素的關鍵碼為37,25,14,36,49,68,57,11,雜湊表為ht 12 表的大小為12,雜湊函式為hash x x 11 hash 37 4 hash 25 3 hash 14 3 hash 36 3 hash 49 5 hash 68 2 hash 57 ...

雜湊表(閉雜湊 拉鍊法 雜湊桶)

雜湊表,也稱雜湊表,是一種通過key值來直接訪問在記憶體中的儲存的資料結構。它通過乙個關鍵值的函式 被稱為雜湊函式 將所需的資料對映到表中的位置來訪問資料。關於雜湊表,主要為以下幾個方面 一 雜湊表的幾種方法 1 直接定址法 取關鍵字key的某個線性函式為雜湊位址,如hash key key 或 h...