1. 程式人生 > >8天精讀掌握:演算法4(Algorithms) 第2天 2018/11/15

8天精讀掌握:演算法4(Algorithms) 第2天 2018/11/15

今日有效學時:11.5小時 ,不過因為有突發事情從11點到凌晨3點都沒有學習,3點才睡覺,其餘時間效率非常高

今日綜合評分:90分

學習成果:今天學了80頁,其實可以學100頁的 主要是因為被一些事情打擾了

普林斯頓-演算法4 第一章1.2 資料抽象

  • 測試
    • 為什麼不適用字元陣列代替字串?
  • 程式碼實戰
    • 實現普通累加器和視覺化累加器

 

普林斯頓-演算法4 第一章1.3 揹包 佇列和棧

  • 理解泛xin的概念
  • 理解:型別引數相關概念和性質
    • T-理解:型別引數的概念,並且型別引數必須被例項化為引用型別。
    • 記憶:JAVA中封裝型別和原始資料型別的對應關係
    • T-理解:自動裝箱和自動拆箱的概念
  • Iterable collections.
    • T-理解:一級語言特性-迭代訪問性
    • 理解foreach語句,以及foreach語句對於可迭代集合的基本語法。
  • BAG
    • T-理解:The order of iteration is unspecified and should be immaterial to the client.
    • 掌握揹包的概念和性質
    • 程式碼測試:
      • 利用揹包資料結構,計算標準輸入中的平均值和標準偏差。
  • FIFO queuesfirstin-first-out (FIFO)
    • 程式碼測試:利用FIFO queues實現 readInts方法,即在不知道陣列大小的情況下讀出檔案的所有數字到一個數組中。
    • 掌握queues的概念和性質
  • Pushdown stacksLIFO
    • 掌握棧的概念和性質
    • 測試:請回答這是什麼演算法【胡氏雙棧演算法】
    • 程式碼測試:Dijkstra演算法(演算法功能:給定任意字串,計算他的結果)
      • Dijkstra’s two-stack arithmetic expression-evaluation algorithm
  • Implementing collections
    • 程式碼實現:Fixed-capacity stack
    • 程式碼實現:Fixed-capacity stack+Generics
      • 瞭解JAVA中泛型的基本套路
      • 重要細節:JAVA中建立泛型陣列的語法
  • 理解物件遊離的概念
  • 回憶本章棧的實現教學流程
    • 版本1:定容棧-缺點沒有 Generics
    • 版本2:改動一點點程式碼將定容棧實現generics
    • 版本3:實現非定容棧,利用動態挑戰陣列大小,使得棧的利用率>25%;
    • 版本4:改動原始碼以避免物件遊離
      • T-理解我們的棧實現 物件遊離發生的原因
    • 版本5:改動原始碼使得我們的棧可以迭代
      • T-理解棧的迭代器的next方法實現是 --i(佇列就是++i)
      • T-理解foreach語句的本質[就是while的某種格式的簡寫]
      • 因為歷史原因,必須有如下程式碼:
        • import java.util.Iterator
      • 可迭代集合需要滿足如下兩個核心

                                      the ingredients that we need to implement in any iterable collection:

                                  ■ The collection must implement an iterator() method that returns an

                                              Iterator object.

                                 ■ The Iterator class must include two methods: hasNext() (which returns a

                                     boolean value) and next() (which returns a generic item from the collection)

 

注意:測試部分指的是我在BFLB測驗中必須要測驗的點。每天我羅列出來我學習的知識大部分我都會在BFLB測驗中對其進行考核;