找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2656|回復: 0
收起左側(cè)

算法

[復制鏈接]
ID:70976 發(fā)表于 2014-12-25 20:08 | 顯示全部樓層 |閱讀模式

對于算法的描述有很多方法,如自然語言、流程圖、計算機語言和偽代碼等,其中使用最廣泛的是流程圖。流程圖主要有傳統(tǒng)的流程圖和N-S流程圖。
1.傳統(tǒng)的流程圖
傳統(tǒng)的流程圖采用特定符號描述算法,常用的符號及其功能如下:


傳統(tǒng)流程圖的特點是算法描述靈活自由,形象直觀。但是由于它允許使用流程線任意轉(zhuǎn)移,這在程序設(shè)計時留下隱患。如果在程序中允許流程毫無限制地任意轉(zhuǎn)移,就會使程序如同一團亂麻,難以閱讀和維護。于是有人提出了結(jié)構(gòu)化程序設(shè)計的思想,主張限制這種無規(guī)律的任意轉(zhuǎn)向,而用3種基本結(jié)構(gòu)作為構(gòu)成程序的基本單位。這樣就限制了流程線的使用。也就是說,結(jié)構(gòu)化程序可以不采用帶流程線的傳統(tǒng)流程圖來描述算法,而用N-S流程圖來描述。

2.N-S流程圖
N-S流程圖是一種新的流程圖形式,在這種流程圖中,完全去掉了帶箭頭的流程線,全部算法寫在一個矩形框內(nèi),在該矩形框內(nèi)還可以包含其它的從屬于它的框。N-S流程圖很適于表示結(jié)構(gòu)化程序算法。
與結(jié)構(gòu)化程序設(shè)計思想相對應(yīng),N-S流程圖中有3種最基本的結(jié)構(gòu),它們分別是:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),如下圖所示:

(1)順序結(jié)構(gòu)
它表示A和B兩個框組成一個簡單的順序結(jié)構(gòu),在執(zhí)行完A框操作之后,順序執(zhí)行B框操作。
(2)分支結(jié)構(gòu)
它表示當條件成立時執(zhí)行A框操作,條件不成立時執(zhí)行B框操作。
(3)循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)有兩種情況,一種是當型循環(huán)情況,它表示當型條件成立時重復執(zhí)行A框操作,條件不成立時結(jié)束循環(huán);還有一種是直到型循環(huán)結(jié)構(gòu),它表示重復執(zhí)行A框操作,直到條件成立為止。
N-S流程圖的每個基本結(jié)構(gòu)都是一個矩形框,在一個基本結(jié)構(gòu)中可以嵌套另一個基本結(jié)構(gòu),整個算法可以像堆積木一樣堆成,三種基本結(jié)構(gòu)組成的算法能夠解決任何復雜問題。

N-S流程圖保留了傳統(tǒng)流程圖形象直觀地表示算法的優(yōu)點,但去掉了容易導致非結(jié)構(gòu)化的流程線。使用N-S流程圖設(shè)計算法可以使自己養(yǎng)成結(jié)構(gòu)化程序設(shè)計的良好風格,但N-S流程圖的修改不大方便。

算法是解決某一問題的方法和步驟。程序?qū)嶋H上就是用計算機語言描述的算法。程序設(shè)計時應(yīng)認真分析問題,找出合適的算法和數(shù)據(jù)結(jié)構(gòu)。解決同一問題的算法可能有很多,但它們的效率卻可能相差很多,選擇合適的算法可能會大大降低程序設(shè)計的復雜程序,提高程序的運行效率和存儲效率。
計算機所能執(zhí)行的算法必需具備以下幾個特性:
(1)有窮性
算法是一個有窮的計算機操作的序列,即計算機可以按照算法的規(guī)定從一個惟一的初始動作開始,經(jīng)過執(zhí)行有限次數(shù)的操作后終止。
(2)可行性
算法中規(guī)定的每個操作都是計算機可以執(zhí)行的基本操作。
(3)確定性
算法中的每個操作應(yīng)執(zhí)行何種動作必須是確定的(即無二義性)且每個操作都只有一個后繼操作。對于一組給定的數(shù)據(jù),同一個算法對應(yīng)的程序在計算機上的執(zhí)行過程是可以再現(xiàn)的,執(zhí)行結(jié)果也是確定的。
(4)輸入
一個算法可以有0個或多個輸入,即算法中要用到的一組初始數(shù)據(jù),可以在算法中確定,也可以在程序運行時由用戶通過輸入設(shè)備(如鍵盤)輸入到計算機中。
(5)輸出
一個算法必須產(chǎn)生一個或多個輸出,即程序在運行時將產(chǎn)生一組與輸入的初始數(shù)據(jù)相對應(yīng)的輸出數(shù)據(jù)。一個沒有輸出的算法是沒有任何意義的。

計算機所能執(zhí)行的算法必需具備以下兩個要素:
(1)操作
即構(gòu)成算法的操作取自哪個操作集。計算機操作主要包括:算術(shù)運算、關(guān)系運算、邏輯運算、函數(shù)運算、位運算及I/O操作等。由于不同的計算機語言對應(yīng)的操作集略有不同,所以在設(shè)計算法前,應(yīng)先確定編程語言。
(2)控制結(jié)構(gòu)
即如何控制算法中的各操作的執(zhí)行順序。通常情況下,各操作是按照書寫的順序執(zhí)行的,若要改變這種執(zhí)行順序可以通過流程控制語句來實現(xiàn)。不同的計算機語言中的流程控制語句也有所不同。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表