欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

數據結構之哈希表

系統 2077 0


wikipedia上的解釋

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


下圖示意了哈希表(Hash Table)這種數據結構。

哈希表


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

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

請讀者自己編寫程序構造這樣一個哈希表,并實現 search 、 insert delete 操作。

如果用我們學過的各種數據結構來表示n個數據的集合,下表是 search insert delete 操作在平均情況下的時間復雜度比較。

各種數據結構的search、insert和delete操作在平均情況下的時間復雜度比較

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

根據以上算法,抽象數據結構如下:

/*哈希表*/

struct obj_container {
obj_hash_fn *hash_fn;//哈希函數
obj_callback_fn *cmp_fn;
int n_buckets; //分配多少個slot ?
int elements; //哈希表中元素數目
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;


接下來實現 search, link , unlink函數。


數據結構之哈希表


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美乱码伦视频免费 | 99久久精品国产一区二区成人 | 欧美精品一区二区免费 | 中文字幕精品一区二区三区精品 | 日韩成人精品在线 | 亚洲一区无码中文字幕 | 婷婷综合影院 | 久久中文字幕一区二区三区 | 久久久人 | 97国产精品视频人人做人人爱 | 久久精品久久久久久 | 特黄aaaaa日本大片免费看 | 精品久久成人免费第三区 | 欧美一区二区三区不卡免费 | 国产精品久久久久影视青草 | 亚洲综合久久成人A片红豆 日本亚洲成人 | 久草草视频在线观看免费高清 | 看中国毛片 | 美女伊人 | 国产黄视频在线观看 | 色综合天天天天做夜夜夜夜做 | 欧美精品黄页免费高清在线 | 色之综合天天综合色天天棕色 | 91久久 | 综合色视频 | 日产精品久久久久久久 | 日韩午夜伦y4480私人影院 | 日本一级淫片1000部 | 天天天天做夜夜夜夜做 | 国产在线小视频 | 国产日韩一区二区三区在线观看 | 久久久精品免费热线观看 | 国产精品中文在线 | 日本免费一区二区三区视频 | 欧美精品欧美极品欧美激情 | 麻豆AV蜜桃AV久久 | 日韩免费看| 玖玖啪 | 99亚洲视频| 亚洲高清一区二区三区 | 500av导航大全精品 |