天天看點

算法和算法分析

        通常人們将算法定義為一個有窮的指令集,這些指令為解決某一特定任務規定了一個運算系列。

        一個算法應當具有以下特性:輸入,輸出,确定性,有窮性,可行性。

        算法的描述有多種方法,如自然語言方式、圖形方式、表格方式等,這裡用C++程式語言來描述算法。

        把一個具體問題的功能需求轉變為一個算法,使用的方法是自頂向下、逐漸求精的結構化程式設計方法。

        通常一個好的算法應達到如下目标:

(1)正确性。算法應滿足具體問題的需求,正确反映求解問題對輸入輸出和加工處理等方面的需求。

(2)可讀性。算法除了用于編制程式在計算機上執行之外,另一個重要用處是閱讀和交流。可讀性好有助于人們對算法的了解,便于算法的交流與推廣。

(3)健壯性。當輸入資料非法時,算法應能适當的做出反應或進行處理,輸出表示錯誤性質的資訊并中止執行。

(4)時間效率和存儲占用量。一般來說,求解同一個問題若有多種算法,則執行時間短的算法效率高,占用存儲空間少的算法較好。但是算法的時間開銷和空間開銷往往是互相制約的,對高時間效率和低存儲量的要求隻能根據問題的性質折衷處理。

這四個目标中對算法在計算機上執行所耗費的時間和所占空間的分析,常常是人們對算法進行評估和選擇的重要依據。

繼續閱讀