我們在解決一個特定問題時,除了要設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)外,還要設(shè)計性能較優(yōu)的算法。
算法是指為解決特定問題而采取的確定且有限的步驟。一個算法應(yīng)當(dāng)具有以下幾個特性:
(1)有窮性:一個算法包含的操作步驟應(yīng)該是有限的。也就是說在執(zhí)行若干操作步驟后,算法將結(jié)束,而且每一步都在合理的時間內(nèi)完成。
(2)確定性。算法中每一條指令必須有確切的含義,不能有二義性,對于相同的輸入必須得出相同的執(zhí)行結(jié)果。
(3)可行性。算法中指定的操作,都可以通過已經(jīng)驗證過可以實現(xiàn)的基本運算執(zhí)行有限次后實現(xiàn)。
(4)有零個或多個輸入。在計算機上實現(xiàn)的算法是用來處理數(shù)據(jù)對象的,在大多數(shù)情況下這些數(shù)據(jù)對象需要通過輸入來得到。
(5)有一個或多個輸出。算法的目的是為了求“解”,這些“解”只有通過輸出才能得到。
算法可以用各種描述方法來進行描述,最常用的是偽代碼和流程圖。
偽代碼是一種近似于高級語言但又不受語法約束的一種語言描述方式,這在英語國家中使用起來較為方便。
流程圖也是描述算法的很好的工具,一般的流程圖由下面的幾種圖形組成:
由于這些基本圖形表示的算法形象直觀,簡單簡便。但這種流程圖對于流程線沒有限制,可以任意轉(zhuǎn)向,在描述復(fù)雜的算法時所占篇幅較多,費時費力,不易閱讀。
1973年,美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式,這種流程圖完全去掉了流程線,算法的每一步都用一個矩形框來描述,把一個個矩形框按執(zhí)行的次序連接起來就是一個完整的算法描述。這種流程圖用兩位學(xué)者名字的第一個英文字母命名,稱為N-S流程圖。
新聞熱點
疑難解答