演算法的基本概念

2021-07-24 19:57:42 字數 2621 閱讀 8738

首先我們要知道演算法是什麼?

乙個演算法是為了解決某一特定的問題而制定的乙個實現過程。

演算法的特性:

1.有窮性:乙個演算法必須在執行有窮步驟後結束且每一步都可在有窮的時間內完成,不能無限的執行下去。如果沒有上限,那麼程式將無休止的執行下去,也就是所謂的死迴圈。

2.確定性:演算法的每乙個步驟應當是確切定義的,對於每乙個過程不能有二義性,將要執行的每個動作必須做出嚴格而清楚的規定。

3.可行性:演算法中的每一步都應當能有效的執行,並要求最終得到正確的結果。

演算法的優劣:

1.正確性:也就是所寫的**能滿足具體問題的需求,並且任何合法的輸入演算法都會得出正確的結果。

2.可讀性:是指演算法被寫好之後,該演算法理解的難易程度,乙個演算法可讀性的好壞十分重要。如果乙個演算法比較抽象且難以理解,那麼這個演算法就不利於交流和推廣使用,對於修改、擴充套件、維護來說都十分不方便,因此,在追求高效的同時,也應是演算法盡量簡明易懂。

3.健壯性:這個就是指當輸入資料非法時,演算法也會做出相應的判斷,而不會因為輸入的錯誤而造成癱瘓。

4.時間複雜度和空間複雜度:簡單的說,時間複雜度就是演算法執行所需的時間。不同的演算法具有不同的時間複雜度,當乙個程式較小時,就感覺不到時間複雜度的重要性,但是當乙個程式特別大時,便會察覺到時間複雜度實際上是十分中要的。因此寫出乙個高效的演算法一直是演算法不斷改進的目標。空間的複雜度是指演算法執行所需的儲存空間的多少,隨著計算機硬體的發展,空間複雜度已經不再顯的那麼重要。

演算法的描述方式:

演算法包含演算法設計和演算法分析兩方面內容,演算法設計主要研究怎樣針對某一特定型別的問題設計出求解的步驟,演算法分析則要討論所涉及出來的演算法步驟的正確性和複雜性。

因此對一些問題的求解的步驟,需要一種表達方式,也就是所謂的演算法描述。演算法描述有很多種方式,例如:

1.自然語言:自然語言就是人們通常用的語言,這種表示方式通俗易懂。

任意輸入3個數,求者三個數中的最小數

①:定義4個變數分別為x、y、z以及min。

②:輸入大小不同的三個數分別賦值給x、y、z。

③:判斷x是否小於y,如果小於,則將x的值賦值給min,否則將y的值賦值給min。

④:將min和z進行比較,如果小於則執行第⑤步,否則就將z的值賦值給min。

⑤:將min的值輸出。

2.流程圖:使用流程圖的話,大家首先要了解一下流程的的一些常用基本符號。

流程圖符號:

輸入乙個數,如果大於0輸出1,等於0輸出0,否則輸出-1。

bohra和jacopini為了提高演算法的質量,經過研究提出了3種基本結構:即順序結構,選擇結構和迴圈結構。因為任何乙個演算法都可以用這3中基本結構組成。這3中基本結構之間可以並列,可以相互包含,但是絕對不允許交叉。整個演算法都是由3種基本結構組成的,所以只要規定好3種基本結構的流程圖的畫法,就可以畫出任何演算法的流程圖。

3.n-s 流程圖:n-s圖另一種演算法表示法,它的根據:既然任何演算法都是上面介紹的3種結構組成的,則各基本結構之間的流程線就是多餘的,因此去掉了所有的流程線,將全部的演算法寫在乙個矩形框中。他同樣也具有三種基本結構。

求0~100的和。

4.偽**表示:用傳統的流程圖和n-s圖表示演算法直觀易懂,但畫起來比較費事,在設計乙個演算法時,可能要反覆修改,而修改流程圖是比較麻煩的。因此,流程圖適宜於表示乙個演算法,但在設計演算法過程中使用不是很理想的(尤其是當演算法比較複雜、需要反覆修改時)。為了設計演算法時方便,常用一種稱為偽**的工具。偽**是用介於自然語言和計算機語言之間的文字和符號來描述演算法。它如同一篇文章一樣,自上而下地寫下來。每一行(或幾行)表示乙個基本操作。它不用圖形符號,因此書寫方便、格式緊湊,易懂也便於向計算機語言演算法(即程式)過渡。

演算法基本概念

所謂演算法,就是解決問題的一種方法或乙個過程。具體來講,演算法是由若干指令組成的有窮序列。演算法概念並不是計算機學科獨有的概念,生活到到處可見演算法的應用。演算法要滿足4條性質 1.輸入 2.輸出 3.確定性 4.有限性 複雜性 時間複雜度 t 演算法所求解問題規模n的 函式 漸進時間複雜度 o 當...

演算法基本概念

一什麼是演算法 解決問題的策略機制,重要的是思想 求滿足a b c 1000,a 2 b 2 c 2 條件的所有a,b,c 思路 列舉法,以下被注釋掉的語句就是列舉每個滿足條件的a,b,c 但是這段語句的演算法複雜度太大 改進 a,b的值就確定了c的值,故 改進演算法如下 import time s...

演算法基本概念

演算法 algorithm 評價演算法優劣的依據 複雜度 時間複雜度和空間複雜度 時間複雜度 time complexity eg.某兩個演算法的時間頻度是t n 100000n2 10n 6100000n 2 10n 6 100000 n2 1 0n 6 t n n2 t n n 2 t n n ...