亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

數(shù)據(jù)結(jié)構(gòu)之哈希表

系統(tǒng) 2008 0


wikipedia上的解釋

http://zh.wikipedia.org/wiki/%E5%93%88%E5%B8%8C%E8%A1%A8


下圖示意了哈希表(Hash Table)這種數(shù)據(jù)結(jié)構(gòu)。

哈希表


如上圖所示,首先分配一個指針數(shù)組,數(shù)組的每個元素是一個鏈表的頭指針,每個鏈表稱為一個槽(Slot) 。哪個數(shù)據(jù)應(yīng)該放入哪個槽中由哈希函數(shù)決定,在這個例子中我們簡單地選取哈希函數(shù)h(x) = x % 11,這樣任意數(shù)據(jù)x都可以映射成0~10之間的一個數(shù),就是槽的編號,將數(shù)據(jù)放入某個槽的操作就是鏈表的插入操作。

如果每個槽里至多只有一個數(shù)據(jù),可以想像這種情況下 search insert delete 操作的時間復(fù)雜度都是O(1),但有時會有多個數(shù)據(jù)被哈希函數(shù)映射到同一個槽中,這稱為碰撞(Collision) ,設(shè)計一個好的哈希函數(shù)可以把數(shù)據(jù)比較均勻地分布到各個槽中,盡量避免碰撞。如果能把n個數(shù)據(jù)比較均勻地分布到m個槽中,每個糟里約有n/m個數(shù)據(jù),則 search insert delete 和操作的時間復(fù)雜度都是O(n/m),如果n和m的比是常數(shù),則時間復(fù)雜度仍然是O(1)。一般來說,要處理的數(shù)據(jù)越多,構(gòu)造哈希表時分配的槽也應(yīng)該越多,所以n和m成正比這個假設(shè)是成立的。

請讀者自己編寫程序構(gòu)造這樣一個哈希表,并實現(xiàn) search insert delete 操作。

如果用我們學(xué)過的各種數(shù)據(jù)結(jié)構(gòu)來表示n個數(shù)據(jù)的集合,下表是 search insert delete 操作在平均情況下的時間復(fù)雜度比較。

各種數(shù)據(jù)結(jié)構(gòu)的search、insert和delete操作在平均情況下的時間復(fù)雜度比較

數(shù)據(jù)結(jié)構(gòu) search insert delete
數(shù)組 O(n),有序數(shù)組折半查找是O(lgn) O(n) O(n)
雙向鏈表 O(n) O(1) O(1)
排序二叉樹 O(lgn) O(lgn) O(lgn)
哈希表(n與槽數(shù)m成正比) O(1) O(1) O(1)

根據(jù)以上算法,抽象數(shù)據(jù)結(jié)構(gòu)如下:

/*哈希表*/

struct obj_container {
obj_hash_fn *hash_fn;//哈希函數(shù)
obj_callback_fn *cmp_fn;
int n_buckets; //分配多少個slot ?
int elements; //哈希表中元素數(shù)目
int version;
/*!variable size */
struct bucket buckets[0]; /*! lengthen tailq, each bucket is a linkedlist */
};

// 每個slot 為一個鏈表

struct bucket_entry {
SPD_LIST_ENTRY(bucket_entry)entry;
int version;
struct obj *pobj; /* pointer to internal data */
}bucket;


接下來實現(xiàn) search, link , unlink函數(shù)。


數(shù)據(jù)結(jié)構(gòu)之哈希表


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中国美女一级a毛片录像在线 | 久久国产免费福利资源网站 | 国内精品综合九九久久精品 | 五月天婷婷在线视频 | 国内精品久久久久久西瓜色吧 | 国产探花视频在线观看 | 老司机午夜免费影院 | 精品中文字幕不卡在线视频 | 国产精品99久久99久久久看片 | 日一日操一操 | 五月天丁香婷婷综合久久 | 亚洲成人综合视频 | 免费看国产一级特黄aa大片 | 日韩欧美在线播放视频 | 中国一级特黄aa毛片大片 | 精品国产九九 | 97在线看片免费福利视频 | 国产一级特黄高清免费大片 | 国产精品欧美韩国日本久久 | 色综合色综合色综合色综合 | 国产美女在线免费观看 | 香蕉人人超人人超免费看视频 | 四虎永久在线精品视频播放 | 四虎成人免费观看在线网址 | 亚洲婷婷在线视频 | 午夜看一级特黄a大片 | 中文字幕在线观看一区二区三区 | 久久久国产免费影院 | 国产级a爱做片免费观看 | 伊人久操 | 亚洲综合在线另类色区奇米 | 久久骚 | 精品无人区乱码1区2区 | 国产欧美亚洲精品第一区 | 青青青国产观看免费视频 | 天天做天天爽爽快快 | 国产激情在线 | 午夜在线精品不卡国产 | 99热国产在线 | 日韩欧美三区 | 五月伊人网 |