1.增加函數:表示問題(n)大小與咱們但願最優化的值之間的關係,該函數表示了該算法的時間複雜度或空間複雜度html
2.在n很小時算法差異很小,可是當n很大時,增加函數之間的差異就很明顯。前端
3.漸進複雜度稱爲算法的階次(order)。git
4.O()記法稱爲大O記法。算法
5.算法的階次是忽略該算法的增加函數中的常量和其餘次要項,只保留主項而得出的。後端
6.無論問題是大是小,運行賦值語句和if語句一次,其複雜度就爲O(1)。數組
7.全部具備相同階次的算法,從運行效率的角度來講都認爲是等價的。數據結構
8.增加函數及其漸進複雜度
函數
9.嵌套循環的複雜度度分析:內層循環的複雜度乘之外層循環的複雜度。學習
10.循環運行的複雜度分析:肯定該循環體的階次n,而後用該循環要運行的次數乘以它。循環的時間複雜度等於循環的複雜度乘以該循環的次數。測試
1.棧是一種線性集合,遵循後進先出的原則。
操做 | 描述 |
---|---|
push | 添加一個元素到棧的頂部 |
pop | 從棧的頂部移除一個元素 |
peek | 查看棧頂部的元素 |
isempty | 肯定棧是否爲空 |
size | 肯定棧的元素數目 |
3.棧的全部操做都是在一端進行的
4.類型兼容性:把一個對象賦給引用的特定賦值是否合法。類型檢查:Java會自動在編譯時標記出不合法的賦值。
5.可利用繼承和多態來建立能夠儲存任意類型的對象的集合。
6.泛型:定義一個類,能夠儲存、操做和管理一些實例化以前沒有制定類型的對象。
7.棧是計算後綴表達式的理性數據結構。
8.堆棧:堆棧是一種之後進先出方式(LIFO)管理數據的線性數據結構。
1.對象引用變量能夠用來建立鏈式結構。
2.在鏈表中儲存的對象泛稱爲該鏈表的結點。
3.鏈表由一些對象構成,其中每一個對象指向了鏈表中下一個對象。
4.在Java語言中,全部動態建立的對象都來自於一個名爲系統堆或自由儲存的內存區
5.訪問元素:惟一方法是從第一個元素開始,順着該鏈表往下進行。
6.插入結點: 結點能夠插入到鏈表的前端,中間和後端,改變引用順序是維護鏈表的關鍵。
7.刪除結點:無論刪除哪一個結點,都要保證鏈表的完整性。
1.隊列是一種線性集合,其元素從一端加入,從另外一端刪除,按先入先出的方式處理。
2.前端(隊首):front、head,末端(隊尾):rear、tail,
操做 | 說明 |
---|---|
enqueue | 向隊列末端添加一個元素 |
dequeue | 從隊列前端刪除一個元素 |
first | 考察隊列前端的那一個元素 |
isEmpty | 斷定隊列是否爲空 |
size | 斷定隊列中的元素數目 |
toString | 返回隊列的字符串表示 |
5.Java集合API提供了Queue接口,由多個類來實現。
6.棧的首要做用是顛倒順序,隊列的首要做用是保持順序。
1.指向首元素的引用head,指向鏈表末的引用tail,整型變量count來跟蹤隊列中的元素數目。
2.必須一直認真地,精準地維護特殊狀況下地引用
3.對於一個空隊列,head,tail引用都爲null,count則爲0.
4.enqueue:將當前末元素的next引用設置指向這個新元素,從新將tail設置爲指向這個新添加的末元素。該操做的複雜度爲O(1).
5.dequeue:先判斷隊列是否有元素,若是沒有,拋出異常EmptyCollectionException,若是有元素,則正常刪除第一個元素,若是隻有惟一元素,則刪除隊列元素後,隊列就爲空,把tail引用設置爲null。該操做複雜度爲O(1).
6.enqueue和dequeue操做做用於隊列的對立端。
1.因爲隊列操做會修改集合的兩端,所以將一端固定於索引0處要求移動元素。
2.因爲隊列處理會影響到該集合的兩端,所以從隊列中刪除元素的時候,該策略要求移動元素。
3.非環形數組實現的元素移位,將產生O(n)的複雜度。
4.把數組看做是環形的,能夠除去在隊列的數組實現中把元素移位的須要。
問題1:隊列、鏈表和堆棧三者的問題
問題1解決方案:隊列和堆棧是兩個相似鏈表的線性數據結構,但在使用時有更多的限制。對於通常的鏈表,能夠經過鏈表的任意位置插入和刪除節點進行修改,可是隊列只能在一端加入節點(入隊)(入棧),在另外一端一處節點(出隊)(出棧),所以隊列是先進先出(FIFO)數據結構,堆棧是後進先出(LIFO)數據結構。
問題2:節點是什麼意思。
問題2解決方案:能夠說是結構體,節點就是一個帶有指針指向的結構體,把相鄰的點關聯起來,能夠把鏈表想象成火車,節點就是其中一節節的車箱,經過通道和先後車箱相連。
問題1:在實現ArrayOrderedListTest測試時,我遇到了顯示最後一個數字時顯示爲null。
問題1解決方案:我對前面ArrayList類檢查時,發現我在顯示last時,將rear-1不當心寫成rear了,因此它所讀取的是最後一個後邊的,因此確定爲空
點評過的同窗博客和代碼
教材第12章、第14章和教材第15章
完成程序設計項目,至少完成pp14.1,pp14.7,pp15.1,pp15.
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 109/109 | 2/2 | 20/20 | |
第2、三週 | 729/838 | 2/4 | 47/67 | |
第四周 | 750/1588 | 2/6 | 22/89 | |
第五週 | 1588/2698 | 2/7 | 34/133 | |
第六週 | 1350/4035 | 2/9 | 24/157 | |
第九周 | 4701/7399 | 5/14 | 97/254 |