1. 程式人生 > >20162317 2016-2017-2《程序設計與數據結構》課程總結

20162317 2016-2017-2《程序設計與數據結構》課程總結

最小 第二周作業 教學 課程總結 能夠 語言 平時 remove 邏輯

20162317 2016-2017-2《程序設計與數據結構》課程總結

總目錄

  • 每周作業鏈接匯總
  • 實驗報告鏈接匯總
  • 團隊項目報告鏈接匯總
  • 代碼托管鏈接
  • 課堂項目實踐或課後作業
  • 課堂的收獲和不足
  • 問卷調查

每周作業鏈接匯總

每周作業目錄

  • 第一周作業
  • 第二周作業
  • 第三周作業
  • 第四周作業
  • 第五周作業
  • 第六周作業
  • 第七周作業
  • 第八周作業
  • 第九周作業
  • 第十周作業
  • 第十一周作業

返回總目錄

  • 第一周作業
    • 這一周我們主要學了:
      1. 算法復雜度的定義和計算
      2. 算法和效率的關系
      3. 算法的特點
      4. 時間復雜度和空間復雜度

返回目錄
技術分享圖片

  • 第二周作業
    • 這一周我們主要學了:
      1. 泛型的使用
      2. 小組對構建之法的總結

返回目錄
技術分享圖片

  • 第三周作業
    • 這一周我們主要學了:
      1. 查找的方法
      2. 不同查找方法的時間復雜度
      3. 排序的方法
      4. 不同排序方法的時間復雜度

返回目錄
技術分享圖片

  • 第四周作業
    • 這一周我們主要做的是實驗一

返回目錄
技術分享圖片

  • 第五周作業
    • 這一周我們主要學了:
      1. 集合
      2. 數組實現棧
      3. 鏈表實現棧

返回目錄
技術分享圖片

  • 第六周作業
    • 這一周我們主要學了:
      1. 隊列
      2. 數組實現隊列
      3. 鏈表實現隊列

返回目錄
技術分享圖片

  • 第七周作業
    • 這一周我們主要學了:
      1. 樹的類型
      2. 數的實現

返回目錄
技術分享圖片

  • 第八周作業
    • 這一周我們主要學了:
      1. 二叉樹
      2. 旋轉
      3. 實驗二

返回目錄
技術分享圖片

  • 第九周作業
    • 這一周我們主要學了:
      1. 堆的定義
      2. 堆的作用
      3. 堆的應用
      4. 堆的實現

返回目錄
技術分享圖片

  • 第十周作業
    • 這一周我們主要學了:
      1. 圖的定義
      2. 圖的類型
      3. 圖的實現

返回目錄
技術分享圖片

  • 第十一作業
    • 這一周我們主要學了:
      1. 哈希算法的類型
      2. 沖突以及解決沖突
      3. 裝載因子

返回目錄
技術分享圖片

  • 自認為寫得最好的一篇博客是?為什麽?
  • 答:我認為寫得最好的一篇博客是第七周學習總結。原因在於在這一篇我對我的問題做了額外的練習,讓我對這一章的知識點印象更為深刻。並且這一章的問題提得比較深刻,解決情況也比較好。

  • 作業中閱讀量最高的一篇博客是?談談經驗
  • 答:作業中閱讀量最高的一篇博客是第三周學習總結。我認為這一篇博客之所以能夠獲得那麽多的關註是因為這篇博客是我們開始學數據結構的基礎:算法和算法復雜度。在內容上,我結合了課本、PPT以及網上的知識,並將知識體系表格給了出來,比較有參考價值,而且比較詳盡,能夠比較容易看懂,因此閱讀量高。


實驗報告鏈接匯總

實驗報告目錄

  • 實驗一
  • 實驗二
  • 實驗三
  • 實驗四
  • 實驗五

返回總目錄

  • 實驗一
    • 簡要介紹:線性結構

返回目錄
技術分享圖片

  • 實驗二
    • 簡要介紹:樹

返回目錄
技術分享圖片

  • 實驗三
    • 簡要介紹:查找和排序

返回目錄
技術分享圖片

  • 實驗四
    • 簡要介紹:圖的實現與應用

返回目錄
技術分享圖片

  • 實驗五
    • 簡要介紹:數據結構的綜合應用

返回目錄
技術分享圖片


團隊項目報告鏈接匯總


  • 代碼鏈接:https://gitee.com/pdds2017/yyh20162317Java2nd

技術分享圖片

> 本學期目標已達成

技術分享圖片

  • 加點代碼,改點代碼是理解的最好方式,談談你的心得
  • 對待一段代碼,如果只是讀懂,這並不是真正的理解。要試著加點代碼,改點代碼。加點代碼,意味著運用原代碼中提供的變量、方法、邏輯來嘗試實現新的功能。當且僅當理解代碼的人才能夠敢加代碼。改點代碼也是,我們看的原代碼也是人敲出來的,這些代碼的排布可能不是最優化的。雖然這些代碼已經實現了一些功能的實現,解決了需求,但不代表它是最優的。代碼中可能存在著垃圾代碼,垃圾變量,也可能邏輯不清,繞來繞去,又或者說是零零散散的,不夠模塊化。根據《編程的智慧》,我們的代碼不應該只停留在實現功能上,我們要寫出優雅的代碼,流暢的代碼,模塊化的代碼,可讀的代碼。若能夠將看的代碼優化且不影響原來的作用,這種就是真正地讀懂代碼。

  • 積極主動敲代碼做到沒?教材實踐上有什麽經驗教訓?
  • 自上個學期自知代碼水平不高後,這學期自己便有一定的意識去主動敲代碼。有時候一個知識點它可以有不同方面的拓展,這就需要自己積極主動地去設例子,用代碼去嘗試,因此這學期除了教材上的代碼,為了學習知識,積極主動敲的代碼也不少。個人感覺這樣的學習方法進步很大,拓寬了自己在java中的視野,對某種方法或者是知識點的理解程度更深,記的程度也更深了。教材上的實踐讓我認識到了,教材中教的畢竟是有限。很多時候教材後的實踐需要用到對應章節更深層次的用法,這時就需要我們去網上找該知識點的擴展用法或者是事例。同時,教材上的實踐很多都是幾個章節的知識點的聯動,這時就需要我們對之前學的知識有很好的消化,會用聯系的觀點去看題目。

返回總目錄


課堂項目實踐或課後作業

  • 算法復雜度
    • 實踐要求:用 Java語言實現下列算法並進行單元測試, 請給出算法的時間復雜度。
    1. 求一個整數二維數組Arr[N][N]的所有元素之和。
    2. 對於輸入的任意 3 個整數, 將它們按從小到大的順序輸出。
    3. 對於輸入的任意 n 個整數, 輸出其中的最大和最小元素。

技術分享圖片

  • 仿ArrayList
    • 實踐要求:使用Java代碼來實現ArrayList中的幾個功能:
      • getCountSize():獲取列表中存放元素的個數
      • isEmpty():判斷列表是否為空
      • add(Object newEntry):往列表中添加元素
      • remove(Object anEntry):移除列表中指定的元素
      • clear():將列表清空
      • getFrequencyOf(Object anEntry):獲取數組中某元素的個數
      • contains(Object anEntry):檢驗某元素是否包含在這列表中

技術分享圖片

  • 隊列課下作業
    • 實踐要求:
      • 用自己完成的隊列(鏈隊,循環數組隊列)實現模擬票務櫃臺排隊功能
      • 用JDB或IDEA單步跟蹤排隊情況,畫出隊列變化圖

技術分享圖片

  • 使用隊列實現楊輝三角
    • 實踐要求:
      • 如題

技術分享圖片

  • 對二叉樹遍歷操作的深入思考
    • 實踐要求:
      • 已知某種遍歷序列,試著確定唯一的一棵樹

技術分享圖片

  • 課堂實踐對提高應用能力有幫助嗎?
    • 我認為非常有,當場的檢驗是最能考驗一個人能力的有效方法。這樣可以看出自己平時還有哪些還沒完全熟悉,從而可以更好地提高自己的短缺方面。
  • 課堂實踐上對自己有什麽經驗教訓?
  • 平時能夠做到的在現場檢驗不一定能夠做到,總有一個方面自己還不是很熟悉,總有一個方面自己還有繼續提升的空間。因此現場的檢驗要重視起來,通過課堂實踐來更好地進行自我的提高和升值。
  • 課堂實踐上對老師有什麽教學建議?
    • 方法很好,請繼續保持

返回總目錄


課堂的收獲和不足


問卷調查

20162317 2016-2017-2《程序設計與數據結構》課程總結