課程:《程序設計與數據結構》
班級: 1723
姓名: 王禹涵
學號: 20172323
實驗教師:王志強老師
測試日期:2018年10月
必修/選修: 必修算法
三種算法查找練習
給定關鍵字序列11,78,10,1,3,2,4,21試分別用順序查找、折半查找、散列查找(用線性探查法和鏈地址法)來實現查找。試畫出它們的對應存儲形式(順序查找的順序表,二分查找的斷定樹,兩種散列查找的散列表),並求出每一種查找的成功平均查找長度。其中,散列函數H(K) = K % 11.數組
1.首先在0索引處添加序列元素11
數據結構
2.在1索引處添加序列元素78
函數
3.在10索引處添加序列元素10
測試
4.在1索引處添加序列元素1,但由於1索引處已經有了元素78,發生衝突,按照線性探查法,探測下一地址,若是爲空則插入,因此最終1添加到2索引處
.net
5.添加序列元素3到3索引處
設計
6.添加2到2索引處,2索引處不爲空日後移一位,3索引處依然不爲空,再日後移一位,最後添加到4索引處
指針
7.添加4到4索引處,發生衝突,日後移一位,添加到5索引處
blog
8.添加21到10索引處,不爲空,日後移一位到0索引處,注意不是添加一個11索引處,發生衝突則日後移,直到6索引處
排序
9.最終獲得哈希表,而查找每一個元素所須要的比較次數以下
10.ASL= (1 + 1 + 2 + 1 + 3 + 2 + 8 + 1 )/8 = 2.375
11.錯誤分析:當發生衝突時,從發生衝突的那個單元開始,按照必定的次序,從哈希表中找出一個空閒的存儲單元,把發生衝突的待插入關鍵字存儲到該單元中,從而解決衝突的發生。若是是在哈希表尾的存儲單元發生了衝突,則繼續從0索引處開始尋找空閒存儲單元,若是沒有找到空閒的存儲單元,則溢出,不能憑空生出一個新的索引處
因此ASL= (1 x 6 + 2 x 2)/8 = 1.25