20162303 《程序設計與數據結構》第十一週學習總結

20162303 2017-2018-1 《程序設計與數據結構》第十一週學習總結

教材學習內容總結

20.1 哈希方法

  • 在實現集合或映射時,哈希方法甚至比二叉查找樹更加高效。
  • 次序由元素添加到集合中或刪除的次序決定或者由集合元素自己的次序決定,而哈希意味着次序由項在集合中的位置---由所保存元素值。
  • 在哈希表中,元素保存在哈希表(hash table)中,元素在表中的位置由哈希函數決定。
  • 每一個位置稱爲單元(cell)或桶(bucke)。
  • 哈希表中一個元素的全部操做都是O(1)。
  • 兩個元素或者關鍵詞都映射到表中的同一個位置,這種現象稱爲衝突(collision)。
  • 講每一個元素映射到表中的惟一位置的哈希函數稱爲理想哈希函數。
  • 因爲不知道表的容量大小,所以能夠動態調整大小。

20.2 哈希函數

  • 抽取僅適用元素值或關鍵詞的一部分來計算保存元素的位置。
    好比抽取姓名的首字母,抽取電話號碼的前四位。javascript

    20.2.1除法方法

  • 使用關鍵詞除以某個正整數p後的餘數,做爲給定元素的下標。
    javascript Hashcode(key)=Math.abs(key)%p
  • 若是使用表長做爲p,可有效分散關鍵詞在表中的位置。php

    20.2.2摺疊方法

  • 將關鍵詞劃分爲幾段,而後將它們組合或摺疊在一塊兒來創建表中的下標。html

    20.2.3 平方取中方法

  • 將關鍵詞自乘,而後使用抽取方法從平方結果中抽取對應的位獲得下標。java

    20.2.4 基數轉換方法

  • 關鍵詞轉換爲另外一位數值基數。git

    20.2.5 數字分析方法

  • 抽取關鍵詞的指定位並進行處理從而獲得下標。web

    20.2.6 長度依賴方法

  • 關鍵詞和關鍵詞的長度以某些方式組合起來,或直接當作下標使用,或再進一步使用其餘方法進行處理而獲得下標。api

    20.2.7 Java語言中的哈希函數

  • Java爲全部的對象提供了hashcode方法,最好仍是爲特定的類定義一個具體的哈希函數。數據結構

20.3 解決衝突

  • 衝突即多個元素或關鍵詞映射到表的同一個位置。函數

    20.3.1 鏈式方法

    20.3.2 開放地址方法

20.4 從哈希表中刪除元素

20.5 Java Collection API 中的哈希表

教材學習中的問題和解決過程

  • 問題1:
    關鍵路徑的問題有點理解的不到位
  • 解決方案:
    課上例子後有了感受

  • 問題2:

    答案和解析不符。
  • 問題3:

    答案和解析不符。

代碼託管

上週考試錯題總結





結對及互評

點評模板:

  • 博客中值得學習的或問題:
    • 步驟詳細
    • 排版精美

本週結對學習狀況

- [20162307](http://www.cnblogs.com/Tiffany23/)
- 結對學習內容
    - 一塊研究上課所學內容
    - 小組博客交流

其餘

學習是一個長期堅持的過程,不能一蹴而就,要努力朝着目標前前進。學習

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 70/70 1/1 12/12
第二週 0/70 1/1 12/24
第三週 208/278 1/2 12/36
第四周 0/278 1/3 12/48
第五週 529/807 1/4 12/60
第六週 0/7807 1/1 12/72
第七週 500/1307 4/8 12/84
第八週 0/1307 1/9 12/96
第九周 661/1968 1/10 12/108
第十週 1710/3678 3/13 12/120
第十一週 121/3799 1/14 12/142

因爲單雙週統計代碼一概算在單週,所以雙週代碼記爲0

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:12小時

  • 實際學習時間:12小時

參考資料

相關文章
相關標籤/搜索