教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是算法?算法的5個特性

更新時間:2022年06月01日09時42分 來源:傳智教育 瀏覽次數(shù):

算法(algorithm)是解決特定問題的步驟描述,通俗地講,算法就是描述解決問題步驟的方法。例如,新學期開學,從家到學校的交通方式這個問題就有很多解決方案:有的學生乘坐火車,有的學生乘坐汽車,有的學生乘坐飛機,在本市的可能會自己開車或乘坐公共汽車,離學校近的可能會步行來學校。這里每一種方案就是一種算法,這么多解決方法就是這么多種算法。

在計算機中,算法也是對某一個問題的求解方法,只是它的表現(xiàn)形式是計算機指令的有序序列,執(zhí)行這些指令就能解決特定的問題。例如,在高級程序設計語言(如C語言)中,常用的排序算法如選擇排序、冒泡排序等,都是用計算機指令編寫算法,來解決排序問題。

在程序設計中,算法有3種較為常用的表示方法:偽代碼法、N-S結構化流程圖和流程圖法,用得最多的是流程圖法,接下來就簡單地學習算法的流程圖法。流程圖是描述問題處理步驟的一種常用圖形工具,它由一些圖框和流程線組成。使用流程圖描述問題的處理步驟,形象觀,便于閱讀。畫流程圖時必須按照功能選用相應的流程圖符號,常用的流程圖符號如圖所示。

1653994328714_流程符號.jpg

圖1-12所示的流程圖符號中列舉了4個圖框、1個流程線和1個連接點,具體說明如下:

·起止框用于表示流程的開始或結束。

·輸入輸出框用平行四邊形表示,在平行四邊形內可以寫明輸入或輸出的內容。

·判斷框用菱形表示,它的作用是對條件進行判斷,根據條件是否成立來決定如何執(zhí)行后續(xù)的操作。

·處理框用矩形表示,它代表程序中的處理功能,如算術運算和賦值等。

·流程線用單向箭線或直線表示,可以連接不同位置的圖框。流程線的標準流向是從左到右和從上到下,可用直線表示,非標準流向的流程線應使用箭頭指示方向。

·連接點用圓形表示,用于流程圖的延續(xù)。通過上面的講解,讀者對流程圖符號有了簡單的認識。下面以一個數(shù)組選擇排序算法

的流程圖為例,學習簡單的流程圖,如圖所示。

1653994349375_流程圖.jpg

假設一個數(shù)組要從小到大排序,結合流程圖來分析選擇排序的過程:

第一步,在數(shù)組中選擇出最小的元素,將它與0角標元素交換,即放在開頭第1位。

第二步,除0角標元素外,在剩下的待排序元素中選擇出最小的元素,將它與1角標元素交換,即放在第2位。

第三步,依次類推,直到完成最后兩個元素的排序交換,就完成了升序排列。這樣根據流程圖來編寫算法的指令代碼,就會變得清晰簡單。讀者在以后設計算法時,最好先根據設計思路出算法的流程圖,其次分析其可行性,最后再完成代碼。

算法的特性

一個好的算法,尤其是一個成熟的算法,應該具有以下5個特性:

(1)確定性。算法的每一步都有確定的含義,不會出現(xiàn)二義性。即在相同條件下,只有一條執(zhí)行路徑,相同的輸入只會產生相同的輸出結果。

(2)可行性。算法的每一步都是可執(zhí)行的,通過執(zhí)行有限次操作來完成其功能。

(3)有窮性。一個算法必須在執(zhí)行有窮步驟之后結束,且每一步都可在有窮時間內完成。這里的有窮概念不是數(shù)學意義上的,而是指在實際應用當中可以接受的、合理的時間和步驟。

(4)高效率與低存儲。算法的效率通常指的是算法的執(zhí)行時間,對于同一個問題的多種算法,執(zhí)行時間短的其效率就高。存儲量指的是算法在執(zhí)行過程中所需的最大存儲空間,包括所用到的內存及外存。設計算法時應考慮到執(zhí)行效率和存儲需求,設計出一個“性價比”較高的算法。

要設計出一個好的算法,就要綜合考慮其正確性、可讀性、健壯性,還要考慮其執(zhí)行效率和存儲量需求。

1653994606311_算法特性.png

0 分享到:
和我們在線交談!