1. 程式人生 > >20172312 2018-2019-1 《程序設計與數據結構》第五學習總結

20172312 2018-2019-1 《程序設計與數據結構》第五學習總結

object each 能夠 如果 項目 clas ace rom 內容

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

參考資料

藍墨雲班課

20172312 2018-2019-1 《程序設計與數據結構》第五學習總結