什么是算法呢这揣?
算法是解決特定問題求解步驟的描述,在計算機中表現(xiàn)為指令的有線序列循帐,并且每條指定表示一個或多個操作。
簡單理解就是寫程序的技巧和方式舀武。
- 對于給定的問題拄养,是可以有多種算法來解決的。
- 一個算法也不能有通解所有問題
- 算法有效率高低之別
算法的特性
算法具有五個基本特征:輸入银舱、算法瘪匿、有窮性、確定性寻馏、可行性柿顶。
輸入
- 算法具有零個或多個輸入。
- 盡管對于絕大多數(shù)算法來說操软,輸入?yún)?shù)都是必要的。
但是有些時候宪祥,像打印"I love coding"聂薪,就不需要啥參數(shù)。
void print(){
printf("I love coding\n");
}
輸出
- 算法至少有一個或多個輸出蝗羊。
- 算法是一定要輸出的藏澳,輸出的形式可以是打印形式輸出,也可以是返回一個值或多個值耀找。
有窮性
- 指算法在執(zhí)行有限的步驟之后翔悠,自動結(jié)束而不會出現(xiàn)無限循環(huán),并且每一個步驟在可接受的時間內(nèi)完成野芒。
確定性
- 算法的每一步驟都具有確定的含義蓄愁,不會出現(xiàn)二異性。
- 算法在一定條件下狞悲,只有一條執(zhí)行路徑撮抓,相同的輸入只能有唯一的輸出結(jié)果。
- 算法的每個步驟都應(yīng)該被精確定義而無歧義
可行性
- 算法的每一步都必須是可行的摇锋,也就是說丹拯,每一步都能通過執(zhí)行有限次數(shù)完成站超。
算法設(shè)計的要求
正確性
- 算法至少應(yīng)該具有輸入、輸出和加工處理無歧義性乖酬、能正確放映問題的需求死相、能夠得到問題的正確答案。
大體分為以下四個層次:
算法程序沒有語法錯誤咬像。
算法程序?qū)τ诤戏ㄝ斎肽軌虍a(chǎn)生滿足要求的輸出算撮。
算法程序?qū)τ诜欠ㄝ斎肽軌虍a(chǎn)生滿足規(guī)格的說明。
算法程序?qū)τ诠室獾箅y的測試輸入都有滿足要求的輸出結(jié)果施掏。
可讀性
- 便于閱讀钮惠、理解和交流。
我么寫代碼的目的七芭,一方面是為了讓計算機執(zhí)行素挽,但還有一個重要的目的是為了便于他人閱讀和自己日后閱讀修改。
健壯性
- 當輸入數(shù)據(jù)不合法時狸驳,算法也能做出相關(guān)處理预明,而不是產(chǎn)生異常或莫名其妙的結(jié)果耙箍。