1. 程式人生 > >20172322 2018-2019-1 10月19日課上測試報告

20172322 2018-2019-1 10月19日課上測試報告

20172322 2018-2019-1 10月19日課上測試報告

課程:《程式設計與資料結構》
班級: 1723
姓名: 張昊然
學號: 20172322
實驗教師:王志強老師
測試日期:2018年10月19日
必修/選修: 必修

增補的習題原題

需要查詢的數字初始順序為11,78,10,1,3,2,4,21

課上提交的作業所存在的問題

  • 二分查詢部分的ASL算錯。
  • 雜湊查詢(線性)部分的儲存結構錯誤,ASL算錯。
  • 雜湊查詢(鏈地址)部分的儲存結構錯誤。

改正方案及分析思路

  • 二分查詢
    先排序,排序後順序為:1 2 3 4 10 11 21 78
    放入陣列中,(假設演算法中要求先找較小的數)
    如圖:

ASL = (1 + 22 + 34 + 4 )* 1/8 = 21/8 = 2.375

  • 雜湊查詢(線性)
    n = 8 ,故m的取值在應在8.8-13.6之間,本次選取11作為m。
    如圖,

其中11,78,10先行進入第0,第1,第10個位置,
1需要放入時出現衝突,故(1+1)/ 11 = 2,所以1放入第2個位置。
3放入第3個位置,
2需要放入時產生衝突,故(1+1)/11=2也有衝突,故(1+1+1)/11=3,所以2放入第4個位置,
4需要放入時產生衝突,故(4+1)/11=5,5放入第五個位置,
21需要放入時產生衝突,故21放入第6個位置。

ASL = (1+1+2+1+3+2+1+8) * 1/8 = 2.375

  • 雜湊查詢(鏈地址)
    如圖,

11,78,10先行進入第0,第1,第10個位置,
1需要放入時出現衝突,故將1放入78的鏈後,
3,2,4放入時均無衝突,
21放入時產生衝突,故將21放入10的鏈後。

ASL = (81 + 22)/8 = 1.25

感想

  • 二分查詢對於偶數個元素來說不像之前奇數個那麼簡單
  • 對於雜湊查詢的儲存不需要排序!