20172312 2018-2019-1 《程式設計與資料結構》第五學習總結
阿新 • • 發佈:2018-11-11
20172312 2018-2019-1 《程式設計與資料結構》第五週學習總結
教材學習內容總結
第七章
查詢
1.查詢是一個在某個專案中尋找某一指定元素或者確定某一指定目標不存在的過程,對其進行查詢的專案組有時也稱為查詢池 高效的查詢會使該過程所做的比較操作次數最小化
2.兩種不同的查詢
型別 特點 線性查詢法 從表頭開始依次比較,直到找到目標或確定目標不存在。 不是特別高效,唯一的條件是必須能夠依次考察每一個 元素,時間複雜度O(n 在一個已排序的專案組中,從列表的中間開始查詢, 如果中間元素不是要找的指定元素,則削減一半查 二分查詢法 池,從剩餘一半的查詢池(可行候選項)中繼續以 與之前相同的方式進行查詢,多次迴圈直至找到目 標元素或確定目標元素不在查詢池中。 二分查詢普遍要快得多,二分查詢具有一個對數演算法, 時間複雜度O(log2 n) 二分查詢對於大型查詢池非常有效率
排序
1.排序是基於某一標準,將某一個專案按照某個規定順序排列,通常分為順序排列(比較n^2次)和對數排列(比較nlog2n次),n較小時這兩類演算法之間幾乎不存在實際差別
2.幾種不同的排序
型別 特點 氣泡排序 通過重複比較相鄰元素且在必要時互換,從而完成排序 。將最大值“冒泡”到最後,然後再次掃描,重複該過程 ,直到所有元素冒泡到正確的位置,一共進行n-1輪 快速排序法 將列表進行分割槽,然後對分割槽進行遞迴式排序。先選擇 一個列表元素作為分割槽元素,然後分割列表,使小於分 區元素的元素位於該元素的左邊,剩下的位於右邊,最 後再將該方法應用於兩分割槽 選擇排序 通過反覆將某一特定值放到它在列表中的最終已排序位 置來實現排序。 歸併排序 演算法通過將列表遞迴分成兩半直至每一子列表都含有一 個元素,然後將這些子列表歸併到一個排序順序中分為 分解、合併兩步
教材學習中的問題和解決過程
- 問題1:選擇排序和氣泡排序,插入排序的時間複雜度都為O(n^2),但插入排序>氣泡排序>選擇排序
- 問題1解決方案:氣泡排序每次比較相鄰的兩個元素進行調換位置,而選擇排序演算法並不在開始調換位置,先從頭到尾掃描一遍,將所有元素掃描完畢後,再把霸氣中最小的元素和首個元素對調,就把最小的放在了最前面,選擇排序每掃描一遍陣列,只需要一次真正的交換,而冒泡可能需要很多次
程式碼除錯中的問題和解決過程
- 問題1:如下圖,利用已有的LinkedList類出現如下情況。
- 問題1解決方案:
碼雲連結
上週錯題總結
1.Interfaces cannot be derived from other interfaces.
A . True
B . False √
介面不能從其他介面派生
錯誤:介面同樣可以從介面派生
2.Interfaces allow us to make polymorphic references, in which the method that is invoked is based on the type of the reference variable rather than the particular object being referenced at the time.
A . True
B . False √
介面允許我們進行多型引用,其中呼叫的方法基於引用變數的型別,而不是當時引用的特定物件
錯誤:介面同樣允許引用特定物件
結對及互評
本週結對學習情況
- 20172315
- 20172318
結對學習內容
- pp9.2 pp9.3
學習進度條
程式碼行數(新增/累積) | 部落格數量(新增/累積) | 學習時長(新增/累積) | ||
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 22/22 | 1/1 | 12/12 | |
第二週 | 203/225 | 2/3 | 25/37 | |
第三週 | 574/799 | 1/4 | 15/52 | |
第四周 | 1283/1882 | 2/6 | 20/72 | |
第五週 | 986/2868 | 1/7 | 20/92 |