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