20172303 2018-2019-1 《程序設計與數據結構》第6周課堂實踐報告

20172303 2018-2019-1 《程序設計與數據結構》第6周課堂實踐報告

  • 課程:《程序設計與數據結構》
  • 班級: 1723
  • 姓名: 範雯琪
  • 學號:20172303
  • 實驗教師:王志強
  • 助教:張師瑜/張之睿
  • 實驗日期:2018年10月19日
  • 必修/選修: 必修

測試內容

測試原理

  • ASL的算法和二分查找見上次的博客

哈希查找法

  • 哈希查找是經過計算數據元素的存儲地址進行查找的一種方法。O(1)的查找,即所謂的秒殺。哈希查找的本質是先將數據映射成它的哈希值。哈希查找的核心是構造一個哈希函數,它將原來直觀、整潔的數據映射爲看上去彷佛是隨機的一些整數。
  • 哈希查找的操做步驟:
    • (1)用給定的哈希函數構造哈希表;
    • (2)根據選擇的衝突處理方法解決地址衝突;
    • (3)在哈希表的基礎上執行哈希查找。

解題過程

順序查找

  • 順序查找實際上就是把要查找的全部元素放入數組中,按照線性的方式依次比較便可。

二分查找

  • 本次使用二分查找的難點在於它是偶數個的,根據書上的說法,當存在兩個「中間」值時,所採起的中點能夠是兩個中間值中的任何一個。

哈希查找(散列查找)

  • 線性探查法
  • 依據所給的散列函數H(k)=k%11能夠計算出每一個數字在數組中的位置。
    • 11%11 = 0 —— 11放到索引爲0的位置
    • 78%11 = 1 —— 78放到索引爲1的位置
    • 10%11 = 10 —— 10放到索引爲10的位置
    • 1%11 = 1 —— 產生衝突,因此使用開放定值法中的線性探測再散列
      • (1+1)%11 = 2 —— 1放到索引爲2的位置上
    • 以次類推直至最後......
  • 鏈地址法
  • 該方法將發生衝突的元素放到一個單鏈表中,數組中只存儲地址。

錯誤分析

  • 總共有兩處錯誤,第一處錯誤在二分查找那裏,錯誤緣由是計算錯誤。第二處錯誤在哈希查找的第一個線性探查法那裏,我錯誤的覺得只要每一個元素的地址不一樣,找到它們就只須要一次查找,可是後來感受不對,在改完拍好照準備上傳的時候發現已經結束了o(╥﹏╥)o

參考資料

相關文章
相關標籤/搜索