官术网_书友最值得收藏!

1.6.1 算法設計的4個目標

一個好的算法應該具備以下目標。

1.算法的正確性(correctness)

算法的正確性是指算法至少應該包括對于輸入、輸出和處理無歧義性的描述,能正確反映問題的需求,且能夠得到問題的正確答案。

通常算法的正確性應包括以下4個層次:

(1)算法對應的程序沒有語法錯誤。

(2)對于幾組輸入數據能得到滿足規格要求的結果。

(3)對于精心選擇的典型的、苛刻的帶有刁難性的幾組輸入數據,能得到滿足規格要求的結果。

(4)對于一切合法的輸入都能得到滿足要求的結果。

對于這4層算法正確性的含義,達到第4層意義上的正確是極為困難的,所有不同輸入數據的數量大得驚人,逐一驗證的方法是不現實的。一般情況下,我們把層次3作為衡量一個程序是否正確的標準。

2.可讀性(readability)

算法主要是為了人們方便閱讀和交流,其次才是計算機執行。可讀性好有助于人們對算法的理解,晦澀難懂的程序往往隱含著不易被發現的錯誤,難以調試和修改。

3.健壯性(robustness)

當輸入數據不合法時,算法也應該能做出反應或進行處理,而不會產生異常或莫名其妙的輸出結果。例如,求一元二次方程根ax2+bx+c=0的算法,需要考慮多種情況,先判斷b2-4ac的正負,如果為正數,則該方程有兩個不同的實根;如果為負,表明該方程無實根;如果為零,表明該方程只有一個實根;如果a=0,則該方程又變成了一元一次方程,此時若b=0,還要處理除數為零的情況。如果輸入的a、b、c不是數值型,還要提示用戶輸入錯誤。

4.高效率和低存儲量(High efficiency and low storage)

效率指的是算法的執行時間。對于同一個問題,如果有多個算法能夠解決,執行時間短的算法效率高,執行時間長的效率低。存儲量需求指算法在執行過程中需要的最大存儲空間。效率與低存儲量需求都與問題的規模有關,求100個人的平均分與求1000個人的平均分所花的執行時間和運行空間顯然有一定差別。設計算法時應盡量選擇高效率和低存儲量需求的算法。

主站蜘蛛池模板: 黎平县| 西乌珠穆沁旗| 湖州市| 怀集县| 永城市| 湾仔区| 本溪市| 延津县| 项城市| 渝北区| 砚山县| 台中市| 铁岭市| 嵊泗县| 古丈县| 西盟| 湘乡市| 新邵县| 随州市| 慈溪市| 宁强县| 海盐县| 仁寿县| 安义县| 江山市| 隆昌县| 寻甸| 双桥区| 奉化市| 绥化市| 博乐市| 卫辉市| 汾阳市| 南召县| 福海县| 株洲县| 玛曲县| 诸暨市| 大埔区| 宿松县| 梓潼县|