第十二章:算法分析:java
一、算法:node
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法表明着用系統的方法描述解決問題的策略機制。也就是說,可以對必定規範的輸入,在有限時間內得到所要求的輸出。git
二、算法分析:程序員
(1)算法效率:
算法效率是指算法執行的時間,算法執行時間需經過依據該算法編制的程序在計算機上運行時所消耗的時間來度量。算法
(2)增加函數:
就是一個表示問題大小與 所用的時間(時間複雜度)或空間(空間複雜度)之間的關係。數組
(3)複雜度計算過程:數據結構
1 、算出每一行語句執行的次數dom
二、 求和,推導出一個n的表達式T(n)ide
3 、找出同數量級的表示式(n的最高次方)函數
4 、T(n)/同數量級–>常數,那麼同數量級就是此算法的時間複雜度
第十四章:棧
一、線性集合:線性結構是一個有序數據元素的集合。。
二、非線性集合:存在順序並列的狀況。
三、棧是一種線性集合,元素後進先出,元素從頂部壓入棧中。
四、棧有push,pop,peek,isempty,size等操做
五、使用泛型的好處:
(1).能夠統一數據類型,便於操做。
(2).將運行時的異常提早到了編譯時,提升了效率。
(3).避免了強制類型轉換。
(4).實現代碼的模板化,把數據類型看成參數傳遞,提升了可重用性。
六、後綴表達式:
先初始化一個棧,這個棧是用來存放運算對象的,而後定義一個變量存放最後的結果。遍歷到數字則依次進棧,遍歷到運算符的時候將棧頂運算符彈出(假設賦給變量a),再將此時的棧頂運算符彈出(假設賦給變量b),用後者對前者作該運算符對應的運算(假設遍歷當前的運算符爲+,則作計算b+a),而後將計算結果入棧。以此方式遍歷整個字符串,最終的結果即爲運算結果。
問題1:隊列的五種基本操做是什麼?
問題1解決方案:
問題2解決辦法:查看這個網址泛型,得知泛型是程序設計語言的一種特性。容許程序員在強類型程序設計語言中編寫代碼時定義一些可變部分,那些部分在使用前必須做出指明。各類程序設計語言和其編譯器、運行環境對泛型的支持均不同。將類型參數化以達到代碼複用提升軟件開發工做效率的一種數據類型。泛型類是引用類型,是堆對象,主要是引入了類型參數這個概念。讓我大概理解了這個問題。
問題1:
鏈表中兩個位置的元素交換數值時,想不出如何交換
問題1解決方案:我一開始的思路集中在交換地址上,但後來發現難度屬實有點大,後來詢問胡泊同窗後茅塞頓開,能夠不交換地址,只交換數值。我以爲這個問題主要是我忘了大一的c語言的知識同時也是上課沒認真聽講。
package com.company; import org.w3c.dom.Node; public class paixu{ node point,point2,tem; int i,temp,j,max; public paixu(node head){ for(point=head;point!=null;point=point.next){ max=point.data; for(point2=point;point2!=null;point2=point2.next){ if(point2.data>max){ max=point2.data; temp=point.data; point.data=point2.data; point2.data=temp; } } } } }
問題2:toString方法的實現
問題2解決方案:
數組:從頭部整形變量開始輸出至尾部整形變量。
鏈表:從鏈表的頭部開始往尾部進行不斷輸出。
本週無錯題
代碼練習較多,問題較爲深邃(至少我看不懂)
基於評分標準我給本博客打分:16分。得分狀況以下:
1.正確使用Markdown語法(加1分)
2.模板中的要素齊全(加1分)
3.教材學習中的問題和解決過程(加3分)
4.代碼調試中的問題和解決過程(加4分)
5.其餘加分(加7分)
6.進度條中記錄學習時間與改進狀況(1)
7.感想,體會不假大空(1)
8.有動手寫新代碼(1)
9.排版精美(1)
10.錯題學習深刻(1)
11.點評認真,能指出博客和代碼中的問題(1)
12.結對學習狀況真實可信(1)
最近java水平感受有所提高,但仍是不太想寫書上的代碼。最近又要學安卓了,安卓確實有點難,一開始都沒找到敲代碼的位置,確實有點心態爆炸,但願能在跟上的同時儘可能往前面攆一攆。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 10000行 | 30篇 | 400小時 | |
第7周 | 1581/4373 | 2/2 | 20/20 |