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.625數據結構

  • 散列查找(線性)
    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的鏈後。3d

ASL = (81 + 22)/8 = 1.25blog

感想

  • 二分查找對於偶數個元素來講不像以前奇數個那麼簡單
  • 對於散列查找的儲存不須要排序!
相關文章
相關標籤/搜索