算法的表示方法都有哪些?
算法設計者必須将自己設計的算法清楚、正确地按步驟記錄下來,這個過程就叫描述算法。表示一個算法,可以用不同的方法。那麼算法的表示方法都有哪些呢?
一個算法有多種表述方式,常見的有自然語言、流程圖、N-S圖、僞代碼、計算機語言等。下面分别進行介紹。
1.自然語言
所謂自然語言,就是日常生活中的語言。它可以是漢語、英語、日語等,一般用于描述一些簡單的問題、步驟,可以使算法通俗、簡單易懂。下面通過具體實例來介紹自然語言。例如,任意輸入三個數,求這三個數中的最大數。
第一步:定義四個變量,分别為x、y、z以及max。第二步:輸入大小不同的三個數,分别賦給x、y、z。
第三步:判斷x是否大于y,如果大于,則将x的值賦給max,否則将y的值賦給max。
第四步:判斷max是否大于z,如果大于,則執行步驟五,否則将z的值賦給max。
第五步:将max的值輸出。
自然語言最大的優點就是容易理解,适用于比較簡單的問題。對于比較複雜的問題或者在描述包括分支或循環的算法時一般會很冗長,所以不用自然語言描述、表示算法,避免出現二義性。
2.流程圖
流程圖是一種傳統的算法表示法,它用一些圖框來代表各種不同性質的操作,用流程線來指示算法的執行方向。由于它簡單直觀,易于理解,所以應用廣泛。常見的流程圖符号及流程圖的例子如圖3.1所示。
其中,起止框是用來标識算法開始和結束的;判斷框的作用是對一個給定的條件進行判斷,并根據給定的條件是否成立來決定如何執行後面的操作;連接點是将畫在不同地方的流程線連接起來。下面通過幾個例子來介紹圖框的使用方法。例如,求兩個整數a和b的最大公約數。流程圖如圖3.2所示。
判斷框兩側的“Y”和“N”代表“是”(yes)和“否”(no)。
經過研究發現,任何複雜的算法,都可以由順序結構、選擇結構和循環結構這三種基本結構組成,這三種基本結構之間可以并列、可以相互包含,但不允許交叉,不允許從一個結構直接轉到另一個結構的内部去。
3.N-S圖
既然任何算法都是由前面介紹的3種結構組成的,那麼各基本結構之間的流程線就成了多餘的。N-S流程圖(這是由美國人I.Nassi和B.Shneiderman共同提出的,故以他們名字的首字母命名)去掉了原來的所有流程線,将全部的算法寫在一個矩形框内。它也是算法的一種結構化描述方法,同樣也有三種基本結構。
(1)順序結構的N-S流程圖,如圖3.3所示。
(2)選擇結構的N-S流程圖,如圖3.4所示。
例如,輸入一個數,判斷該數是否是偶數,并給出相應提示。此程序的選擇結構的N-S流程圖如圖3.5所示。
(3)循環結構。當型循環的N-S流程圖,如圖3.6所示。
例如,程序求1~100之間(包括1和100)所有整數之和的當型循環的N-S流程圖如圖3.7所示。
直到型循環的N-S流程圖,如圖3.8所示。
例如,程序求1~100之間(包括1和100)所有整數之和的直到型循環的N-S流程圖如圖3.9所示
4.僞代碼
僞代碼是用介于自然語言和計算機語言之間的文字和符号來描述算法。它采用某一程序設計語言的基本語法,如操作指令,可以結合自然語言來設計。而且,它不用符号,書寫方便,沒有固定的語法和格式,具有很大的随意性,便于向程序過渡。
下面通過一個例子來介紹如何用僞代碼描述算法。
開始
c=a%b;
循環直到c=0
a=b;
b=c;
c=a%b;
輸出b;
結束
僞代碼雖然不是一種實際的編程語言,但表達能力上類似編程語言,同時避免了描述技術細節帶來的麻煩,所以僞代碼更适合描述算法,故被稱作“算法語言”或“第一語言”。
算法的描述要根據算法的規模和組成特點來選擇不同的描述方式。選擇合适的描述方式,能夠更清晰直接地對算法進行表示。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!