目錄
20182306 2019-2020-1 《數據結構與面向對象程序設計》第八周學習總結
教材學習內容總結
- 查找
- 線性查找即按順序從前向后一個一個進行查找,但是為了提高代碼運行效率,可以在第一個位置設置哨兵,從后向前查找。如果查找到的位置是在哨兵位置,則說明未找到這一目標。
- 折半查找:時間復雜度為O(log2n),效率高,但只能用于有序線性存儲結構。二分查找可以極大的減小算法的時間復雜度,但是缺點是其查找的內容必須是已經排序好的,對于那種不排序的雜亂的線性集合,二分查找法不適用,必須要先排序再查找。
- 哈希表查找:使用mod算法來實現數據的快速存取
- 開放地址法:線性探測再散列,若關鍵字對應地址非空,向后移位直到找到空地址存入,查找步驟與之相同。
- 鏈地址法:將存儲空間定義為鏈表數組,每一個存儲空間都代表一個鏈表的表頭,若出現沖突,直接延長鏈表的長度,查找順序與存入順序相同。
- 排序
- 插入排序:利用雙重循環和插入,逐漸將整個表從前向后實現有序排列。
- 快速排序:根任意元素劃分表,再遞歸的對兩個子表進行排序,從而完成一整組的排序。
- 歸并排序:先遞歸的把表對分成每個子表只含一個元素,再將子表按序合并。
- 選擇排序:反復將具體的值放到它最終應該去的有序位置。
教材學習中的問題和解決過程
- 問題1:設置哨兵在數組第一位有什么意義。
- 問題1解決方案:可以使查找過程獲得一個一定可以找到的結果,此時只需要判斷找到元素的位置是不是在哨兵位置,就可以判斷原來序列中究竟是否含有這個元素。而這一過程可以使循環減少一個判斷語句,循環次數多了以后就可以顯著提高效率
- 問題2:快速排序法和歸并排序法是更加具有效率的排序方法,時間復雜度是多少?
- 問題2解決方案:
歸并排序:時間復雜度是O(nlogn).
快速排序:時間復雜度為O(n^2)。
代碼調試中的問題和解決過程
-
問題1:寫書上代碼時用了swap的方法,但是就出現了這樣的錯誤
![]()
-
問題1解決方案:對<? super T>這個部分進行了修改,
![]()
代碼托管

上周考試錯題總結
無考試
結對及互評
評分標準
-
正確使用Markdown語法(加1分)
-
模板中的要素齊全(加1分)
-
教材學習中的問題和解決過程, 3個問題加3分
-
代碼調試中的問題和解決過程, 2個問題加2分
-
本周有效代碼超過300分行的(加2分)
-
感想,體會不假大空的加1分
-
排版精美的加一分
-
進度條中記錄學習時間與改進情況的加1分
-
有動手寫新代碼的加1分
-
課后選擇題有驗證的加1分
-
錯題學習深入的加1分
-
點評認真,能指出博客和代碼中的問題的加1分
-
結對學習情況真實可信的加1分
點評模板:
-
博客中值得學習的或問題:
- 排版很好
-
代碼中值得學習的或問題:
- 代碼增長量多,說明結對的同學這周很努力的在學習Java,我也要努力學習Java了
- 倉庫有點混亂
點評過的同學博客和代碼
其他(感悟、思考等,可選)
學習內容越來越多,任務量也是越來越大,然后好多知識都要自學,有點跟不上節奏了
學習進度條
| 代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | |
|---|---|---|---|
| 目標 | 5000行 | 30篇 | 400小時 |
| 第一周 | 200/200 | 2/2 | 20/20 |
| 第二周 | 300/500 | 2/4 | 18/38 |
| 第三周 | 500/1000 | 3/7 | 22/60 |
| 第四周 | 300/1300 | 2/9 | 30/90 |
| 第五周 | 1526/2986 | 2/9 | 20/115 |
| 第六周 | 837/3823 | 2/11 | 20/135 |
| 第六周 | 837/3823 | 2/13 | 20/135 |
| 第七周 | 1639/5462 | 2/15 | 20/155 |
| 第八周 | 1233/6695 | 2/17 | 20/175 |
-
計劃學習時間:20小時
-
實際學習時間:20小時


浙公網安備 33010602011771號