
4.時效高和存儲量低
1.時間效率高
? 比如之前我們所說的高斯算法的程序應(yīng)用。不同的運算方法會有著不同的循環(huán)次數(shù)和運算時間。時效越高,算法越好
?2.盡可能小的存儲量需求
如果某個算法造成了大量的內(nèi)存空白和冗余,一個程序占了大量的運算空間,這也不是合理的算法設(shè)計。
關(guān)于效率的度量
一般來說,對于效率的度量,一般使看效果,一個是看預(yù)估的效率。就是事后統(tǒng)計和事前估算。
事后統(tǒng)計是通過設(shè)計好的測試程序和數(shù)據(jù),利用計算機計時器對不同算法編制的程序的運行時間及逆行比較,從而確定算法效率的高低。
由于事后統(tǒng)計太過占用資源,而且照成大量的時間浪費,效果和后果因為不預(yù)估可能會造成無法想像的結(jié)果。所以時候統(tǒng)計的方法就被廢除了。
現(xiàn)在留給我們的就剩下了事前預(yù)估。
經(jīng)過研究,高級語言編寫的程序在計算機上運行所消耗的時間取決于以下因素
1.對于問題所采用的策略,方法(根本)
2.編譯產(chǎn)生的代碼質(zhì)量(軟件支持)3.問題輸入的規(guī)模4.機器執(zhí)行指令的速度(硬件的性能)
根據(jù)之前提到四點我在1,2,4點的后面加的括號,使限制他們的條件。第一條的策略和方法是你對問題設(shè)計的根本中的根本,之后都是按照這個計劃進行設(shè)計。第二條的代碼質(zhì)量,這是需要軟件支持,具體參照我之前寫的代碼質(zhì)量和設(shè)計標準來理解。第四條的機器執(zhí)行指令速度,這是對硬件的性能要求,這個比較好理解,第一代的蘋果電腦的運算能力肯定不及現(xiàn)在最新的麥金塔。內(nèi)存,軟件編譯,cpu運算能力這都是硬件層面的門檻和限制。
所以,到最后最不可控的就是問題的輸入規(guī)模。
也就是說,一個程序的運行時間,依賴于算法的好壞的問題的輸入規(guī)模。所謂問題輸入規(guī)模是指輸入量的多少。
最終,在分析程序的運行時間時,最重要的時把程序看成時獨立于程序設(shè)計語言的算法或一些列步驟。
函數(shù)的漸進增長
(這個地方的內(nèi)容實際上很多,我通過自己的理解,盡可能簡單一點講給你們聽,但是這僅僅是我通過《大話數(shù)據(jù)結(jié)構(gòu)》學(xué)到的相對簡易的,難度大一點的就要從新進行系統(tǒng)的分析了)
輸入規(guī)模n在沒有限制的情況下,超過一個數(shù)值N,該函數(shù)就總是大于另一個函數(shù),函數(shù)漸進增長。
ps:常數(shù)項是可以忽略,同時最高次項相乘的常數(shù)。
總結(jié):判斷效率,常數(shù)和次要項可以忽略,我們更應(yīng)該關(guān)注(最高階項)的階數(shù),可以理解為指數(shù)越大,增長越大。
ps:
很抱歉這段時間學(xué)校的一些事情讓我沒有精力來整理學(xué)習(xí)筆記和資料,所以這次寫的有點草,更新也咕了。
接下來我會專門寫一篇關(guān)于時間復(fù)雜度的博客,這個地方對很多人來說是個難點,我會著重來講,會努力寫的形象一點的。
點看看一眼就是支持,點個贊真的十分感謝!?。。?!
?????????