20182324 2019-2020-1 《數據結構與面向對象程序設計》第8周學習總結

20182324 2019-2020-1 《數據結構與面向對象程序設計》第8周學習總結

教材學習內容總結

  • 一、查找git

    查找是在一組數據項內找到指定目標或是肯定目標不存在的過程。面試

    • 線性查找算法

    • 二分查找
      二分查找利用了查找池有序的特性,同時也要求表必須是有序的。相比於線性查找,二分查找更加高效。markdown

    • 哈希查找
      經過存儲不一樣的哈希值來肯定元素的位置數據結構

  • 二、排序學習

    排序是按某種標準將一列數據項按肯定的次序重排的過程。加密

    • 選擇排序
      反覆地將一個個具體的值放到它最終的有序位置,從而完成排序。spa

    • 插入排序
      反覆地將一個個具體的值插入到表的已有序子表中,從而完成排序。.net

    • 冒泡排序
      反覆地比較兩個相鄰元素,若是必要就交換次序,從而完成排序。

    • 快速排序
      經過劃分子表,遞歸地對兩個子表進行排序,從而完成排序。關鍵是要選擇一個好的劃分元素。

    • 歸併排序
      遞歸地將表平分爲兩部分,直到每一個子表中只含一個元素,將這些表歸併爲有序表,從而完成排序。

    • 排序算法效率

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

  • 問題1:快速排序是怎樣排序的
  • 問題1解決方案:快速排序算法經過劃分表,再遞歸地對兩個子表進行排序,從而完成一組值的排序。最好的狀況是樞紐元選取得當,每次都能均勻的劃分序列, 時間複雜度爲 O(n log n);最壞狀況是樞紐元爲最大或者最小數字,全部數都被劃分到一個序列中,退化爲冒泡排序,時間複雜度爲O(n²)。因此快速排序的關鍵是要選取一個好的劃分元素。

  • 問題2:爲何有些時候使用二分查找卻出現找不到元素的狀況
  • 問題2解決方案:二分查找的前提是查找池元素有序,假若是亂序的,就會誤導查找方向從而結果錯誤。

代碼調試中的問題和解決過程

代碼託管

(statistics.sh腳本的運行結果截圖)

上週考試錯題總結

上週未進行考試,故沒有錯題

結對及互評

點評:

  • 博客中值得學習的或問題:
    • 圖文並茂,有參考資料
    • markdown 格式運用較爲熟練
  • 代碼中值得學習的或問題:
    • 代碼格式規範,合理使用空白,便於閱讀
  • 基於評分標準,我給本博客打分:14分。得分狀況以下:
    • 一、正確使用Markdown語法(加1分)
    • 二、模板中的要素齊全(加1分)
    • 三、教材學習中的問題和解決過程(2分)
    • 四、代碼調試中的問題和解決過程(1分)
    • 五、本週有效代碼超過300分行的(加2分)
    • 六、其餘加分:
      • 感想,體會不假大空的加1分
      • 進度條中記錄學習時間與改進狀況的加1分
      • 有動手寫新代碼的加1分
      • 代碼Commit Message規範的加1分
      • 錯題學習深刻的加1分
      • 點評認真,能指出博客和代碼中的問題的加1分
      • 結對學習狀況真實可信的加1分
  • 參考示例

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20182329 2019-2020-1 《數據結構與面向對象程序設計》第 8 周學習總結

    • 結對學習內容
      • 學習查找的ASL算法,對比出更加高效的算法,同時學會鑑別算法的穩定性。
      • 學會最簡單的線性查找,以及二分法查找。
      • 學會在查找的基礎上進行簡單排序,學會並實現選擇排序。
      • 插入排序是將元素插入已有列表。
      • 學習冒泡排序、快速排序與歸併排序。

其餘(感悟、思考等,可選)

查找與排序是數據結構裏面入門級的算法,三年前學 Pascal 的時候由於高中學科時間緣由沒有進行深刻學習,留下了很大遺憾,但願能在如今補回來。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 10000行 30篇 400小時
第一週 109/109 2/2 28/28 學習了Java的基本語法格式,熟練使用 Linux Bash 命令
第二週 550/659 1/3 23/51 學習掌握JDB調試命令
第三週 1028/1687 2/5 30/81 學習類的編寫與使用
第四周 542/2229 2/7 22/103 學習方法重載,類的繼承、聚合等
第五週 1197/3426 2/9 15/118 學習 Java Socket ,瞭解加密算法
第六週 1344/4770 1/10 22/140 學習多態與異常處理
第七週 3190/7960 2/12 30/170 學習Android
第八週 1588/9548 2/14 30/200 學習查找與排序

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

  • 計劃學習時間:20小時

  • 實際學習時間:30小時

  • 改進狀況:

(有空多看看現代軟件工程 課件 軟件工程師能力自我評價表)

參考資料

相關文章
相關標籤/搜索