更新時間:2020-12-03 17:19:01 來源:動力節點 瀏覽2073次
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。不同的算法可能用不同的時間、空間或效率來完成同樣的任務,也就是它們的空間復雜度與時間復雜度可以,但是算法必須要有算法的5種基本特征。
1.有窮性(Finiteness)
算法的有窮性是指算法必須能在執行有限個步驟之后終止。這一點很好理解,倘若一個算法需要執行無限個步驟而得不出結果,那么這個算法是毫無意義的。除此之外,也是避免了算法陷入死循環中,這樣也是毫無意義的。比如下面的例子:
void fa( )
{
int i=0,s=0;
while(i<10) //死循環
s++; //不滿足有窮性
i++;
printf(“s=%d,i=%d\n“,s,i);
}
void fb( )
{
int i=0,s=0;
while(i<10) //i<10執行多少次
{
s++; //s++執行?次
i++; // i++ 執行?次
}
printf(“s=%d,i=%d\n“,s,i);
}
2.確切性(Definiteness)
一個算法的每一步驟必須有確切的定義。對于每一種情況,需要執行的動作都應嚴格地、清晰地規定。這從很大程度上增強了算法的嚴謹性,本身算法的定義中,算法是一系列解決問題的清晰指令,每一步都是有意義的。
3.輸入(Input)
一個算法有零個或多個輸入,以刻畫運算對象的初始情況,所謂零個輸入是指算法本身給定了初始條件。這些輸入取自于特定的對象的集合。它們可以使用輸入語句由外部提供,也可以使用賦值語句在算法內給定。
4.輸出(Output):
一個算法有一個或多個輸出。算法本身就是為了解決問題得到答案的,所以,沒有輸出的算法毫無意義。
5.可行性(Effectiveness)
一個算法的任何計算步驟都是可以被分解為基本可執行的操作,每個操作都能夠在有限時間內完成。
算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出并停止于一個終態。一個狀態到另一個狀態的轉移不一定是確定的。但不管怎樣,算法本身還是要滿足上述的算法的5個基本特征的,包括隨機化算法在內的一些算法,都必須包含了一些隨機輸入。快來本站的數據結構與算法教程學習各種各樣的算法,解決各種疑難問題吧。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習