算法的特點(diǎn)
算法,顧名思義是為了解決一類(lèi)問(wèn)題而制定的一個(gè)方法。這與程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)密切相關(guān)。算法的描述形式也多種多樣,像傳統(tǒng)流程圖、結(jié)構(gòu)化程序圖以及計(jì)算機(jī)程序語(yǔ)言等等。下面就為大家講解算法的相關(guān)內(nèi)容。
-
**確定性** 在C程序中,每一個(gè)執(zhí)行語(yǔ)句的步驟都應(yīng)當(dāng)是被確切定義的。同理,算法的每一個(gè)步驟也都應(yīng)當(dāng)是被確切定義的。任何一個(gè)過(guò)程不能有二義性,在編輯算法的過(guò)程中,必須對(duì)每個(gè)執(zhí)行語(yǔ)句做出嚴(yán)格而又清楚的定義。
-
**有窮性** 在C語(yǔ)言中,每一個(gè)算法所執(zhí)行的語(yǔ)句步數(shù)一定是有窮的。并且每一步都可以在有窮的時(shí)間內(nèi)完成,不能無(wú)限制的執(zhí)行下去。如果程序或者程序的某一部分不能在有窮的時(shí)間內(nèi)完成,那么程序就會(huì)永無(wú)止境的運(yùn)行下去,進(jìn)入一個(gè)死循環(huán)。
-
**可行性** 在C程序中,每一句執(zhí)行語(yǔ)句必須可以有效的運(yùn)行出結(jié)果。否則就會(huì)出現(xiàn)邏輯性的錯(cuò)誤。比如:
int num1,num2,num3; //聲明三個(gè)整型變量
scanf("%d,%d,%d",&num1,&num2,&num3); //輸入這三個(gè)數(shù),為其賦值
if(num2!=0) //如果num2的值不為0
num3=num1/num2; //num3的值等于num1的值除num2的值
else
printf("error"); //輸出 error
很顯然,當(dāng) num2 的值為0時(shí),上述代碼中的第4行代碼就是一個(gè)無(wú)效的執(zhí)行語(yǔ)句。因?yàn)?不可以做分母。
-
**輸入及輸出** 在C語(yǔ)言中,一個(gè)完整的算法應(yīng)該存在一個(gè)或者多個(gè)輸入/輸出的值。輸入的值作為執(zhí)行算法的一些初始量,輸出的值則為算法執(zhí)行后的結(jié)果。比如:
int a,b,c; //聲明三個(gè)變量 a b c
scanf("%d,%d,%d",&a,&b,&c); //輸入a b c 的值,為其賦值
上述示例的代碼就需要輸入多個(gè)值,為變量賦值。
又如:
main()
{
printf("hello word"); //輸出hello Word
}
上述示例的代碼就不需要輸入值。
算法的優(yōu)缺點(diǎn)
算法,既然有其優(yōu)點(diǎn),自然也會(huì)有缺點(diǎn)。
-
**正確性** 在C語(yǔ)言中,算法的正確性指的是只要輸入的數(shù)據(jù)是合法數(shù)據(jù),該算法都可以得到一個(gè)確切又準(zhǔn)確的值。
-
**可讀性** 在C語(yǔ)言中,算法的可讀性指的是一個(gè)算法被理解的難易程度。一個(gè)算法的可讀性越高,那么這個(gè)算法后期就越容易被理解。相反,若是一個(gè)算法的可讀性很低,那么這個(gè)算法在后期將很難被修復(fù)和完善。
-
**健壯性** 在C語(yǔ)言中,算法的健壯性指的是一個(gè)算法對(duì)于非法輸入的包容性。因?yàn)槊恳粋€(gè)用戶對(duì)同一程序的理解不同,因此在程序使用的過(guò)程中會(huì)出現(xiàn)輸入數(shù)據(jù)非法的情況。而程序的健壯性使得算法不會(huì)因?yàn)橛脩舻姆欠ㄝ斎攵c瘓。
-
**空間****復(fù)雜度和時(shí)間復(fù)雜度** 在C語(yǔ)言中,算法的空間復(fù)雜度和時(shí)間復(fù)雜度指的是一個(gè)算法儲(chǔ)存所需要的體積以及這個(gè)算法運(yùn)行所需要的時(shí)間。這也是衡量一個(gè)算法是否優(yōu)秀的唯一指標(biāo)。而到現(xiàn)在,計(jì)算機(jī)硬件已經(jīng)高度發(fā)達(dá),算法的空間復(fù)雜度已經(jīng)不那么重要了。而如何開(kāi)發(fā)出一個(gè)功能復(fù)雜卻又運(yùn)行快速的算法成為了現(xiàn)在的目標(biāo)。
今天的內(nèi)容就到這里,下期小編將帶大家繼續(xù)學(xué)習(xí),各位看官老爺記得查閱哦~
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
關(guān)于10大C語(yǔ)言基礎(chǔ)算法
這10大C語(yǔ)言基礎(chǔ)算法,在面試中會(huì)經(jīng)常遇到! 算法是一個(gè)程序和軟件的靈魂,作為一名優(yōu)秀的程序員,只有對(duì)一些基礎(chǔ)的算法有著全面的掌握,才會(huì)在
發(fā)表于 04-29 14:30
C語(yǔ)言經(jīng)典算法大全
C語(yǔ)言經(jīng)典算法,詳細(xì)解析算法過(guò)程及算法思想,給讀者具有啟發(fā)意義,教程包含C
發(fā)表于 10-07 08:16
經(jīng)典的C語(yǔ)言算法
一些經(jīng)典的C語(yǔ)言算法,該算法詳細(xì)介紹了使用C語(yǔ)言如何編程解決一些比較難而且比較抽象的程序。
發(fā)表于 04-06 14:52
?4次下載
C語(yǔ)言教程:STL-for-each算法
C語(yǔ)言教程:STL-for-each算法(電源技術(shù)版面費(fèi)5400)-文檔為C語(yǔ)言教程:STL-for-each
發(fā)表于 09-17 12:42
?3次下載

評(píng)論