2020-06-18數(shù)據(jù)結(jié)構(gòu)2

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ù)雜度的博客,這個地方對很多人來說是個難點,我會著重來講,會努力寫的形象一點的。

點看看一眼就是支持,點個贊真的十分感謝!?。。?!







?????????

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容