#define _crt_secure_no_warnings
#include "iostream"
#include "stdlib.h"
#include "windows.h"
#include "iomanip"
using namespace std;
#define ok 1
#define error 0
#define m 18
#define p 16
typedef int keytype;
/*開放位址法處理衝突的雜湊對映
h(key)=key%p p為乙個質因子數
hi=(h(key)+di)%m i=1,2,...,k(k<=m),m為表長
*/typedef struct hashtable[m];
int hash(keytype key);//開放位址法處理衝突的對映
void createhashtable(hashtable ht,int n);//建立雜湊表,keys為元素集合,n為元素個數
int searchhash(hashtable ht, keytype key); //雜湊查詢
double asl(hashtable ht, int n);//求平均查詢長度,n為元素個數
void disphashtable(hashtable ht);
void inithashtable(hashtable ht);
int numsearch(hashtable ht,keytype key);
int main()
ht[j].key = x;//將x放入表中 }}
int searchhash(hashtable ht, keytype key)
} return -1;
}double asl(hashtable ht, int n)
} return (double)s / n;
}void disphashtable(hashtable ht)
void inithashtable(hashtable ht)
}int numsearch(hashtable ht, keytype key)
if (ht[i].key == 0)
return 0;
else
return s + 1;
}
資料結構查詢 雜湊查詢(雜湊查詢)
通常我們查詢資料都是通過乙個乙個地比較來進行,有一種方法,要尋找的資料與其在資料集中的位置存在一種對應的關係,通過這種關係就能找到資料的位置。這個對應關係成為雜湊函式 雜湊函式 因此建立的表為雜湊表 雜湊表 雜湊查詢是關鍵字與在資料集中的位置一一對應,通過這種對應關係能快速地找到資料,雜湊查詢中雜湊...
雜湊查詢 資料結構
假定乙個集合為s 集合長度為n 假定選取的雜湊函式為 h k k m 即用元素的 關鍵字k整除以雜湊表的長度m 假定k和m均為正整數,並且m n 取餘數作為儲存該元素的雜湊位址。h 18 18 13 5 h 75 75 13 10 h 60 60 13 8 h 43 43 13 4 h 54 54 ...
資料結構 雜湊查詢
為什麼要用雜湊查詢?什麼是雜湊查詢?解決衝突有哪些方法?如何評估查詢?雜湊函式如何設計?順序查詢 時間複雜度 o n 二分查詢 前提有序 時間複雜度 o logn 二叉搜尋樹 時間複雜度 o h h 是樹高,最好情況 h logn,最差 h n 二叉平衡樹 時間複雜度 o logn 如何資料量很大時...