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ù)雜度的博客,這個地方對很多人來說是個難點讳窟,我會著重來講,會努力寫的形象一點的敞恋。
點看看一眼就是支持丽啡,點個贊真的十分感謝!S裁ā2构俊!啸蜜!
?????????