1.
? 表的查找效率取決于散列函數(shù)、處理沖突的方法和裝填因子。顯然,沖突的產(chǎn)生概率與裝填因子(表中記錄數(shù)與表長之比)的大小成正比,即裝填得越滿越容易發(fā)生沖突,?
采用合適的處理沖突的方式避免產(chǎn)生聚集現(xiàn)象,也將提高查找效率,例如用拉鏈法解決沖突時(shí)就不存在聚集現(xiàn)象,用線性探測法解決沖突時(shí)易引起聚集現(xiàn)象,
2.?
? 哈希法把要存儲的值映射成哈希值,根據(jù)hash值尋址存儲,查找的時(shí)間復(fù)雜度為O(1)
? 但也可能出現(xiàn)不同的數(shù)據(jù)映射成相同的hash值的情況,這是哈希沖突。設(shè)計(jì)的比較好的哈希函數(shù)能夠減少哈希沖突,但是沖突是不可避免的,沖突造成查找的時(shí)間增加,因此我們普通的哈希表并不放滿,而是定義一個(gè)負(fù)載因子。就是哈希表的容量除以哈希表的長度,一般為0.7左右。
? 影響哈希表查找速度的不是元素個(gè)數(shù),而是負(fù)載因子。
? 3.
? 線性探測:本位置x被占據(jù),就尋找下一位x+1,直至找到空位置,所以:
? (注意看清題目“K的第一個(gè)字母在字母表中的序號”)
? D=4mode11=4,1次
? B=2mod11=2,1次
? T=20mod11=9,1次
? M=13mod11=2->3,2次
? C=3mod11=3->4->5,3次
? I=9mod11=9->10,2次
? K=11mod11=0,1次
? X=24mod11=2->3->4->5->6,5次
? T=20mod11=9->10->0->1,4次
? 9個(gè)數(shù)字,共20次,所以20/9。
4.? ? ? 問的是“至少”,那么設(shè)表原來為空表。? ? ? 第一個(gè):直接找到坑,入坑,1次;? ? ? 第二個(gè):和第一個(gè)同hash,找到坑被第一個(gè)給占了,找下一個(gè),入坑,2次;? ? ? 第三個(gè):第一個(gè)被占了,第二個(gè)也被占了,找第三個(gè),入坑,3次;? ? ? 。。。? ? ? 第n個(gè):n次;? ? ? 一共:(1+n)*n / 2 次? ? ? 【開放地址法(除了隨機(jī)探測)都是(1+n)*n / 2 次】? ?
5.?
? 有序表中所有元素以遞增或遞減方式排列,對數(shù)據(jù)之間的關(guān)系進(jìn)行了描述,是一種邏輯結(jié)構(gòu)。
? 順序表是指用一組地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu)。
? 哈希表 用散列法存儲的線性表叫散列表。
? 單鏈表 用一組地址任意的存儲單元存放線性表中的數(shù)據(jù)元素,均只是一種存取結(jié)構(gòu),不是邏輯結(jié)構(gòu)。
6.
? ??梢允琼樞虼鎯Γ部梢允擎?zhǔn)酱鎯Γc存儲結(jié)構(gòu)無關(guān)。循環(huán)隊(duì)列是隊(duì)列的順序存儲結(jié)構(gòu),鏈表是線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu),用散列法存儲的線性表叫散列表,都與存儲結(jié)構(gòu)有關(guān)