數(shù)據(jù)結(jié)構(gòu)和算法-C語(yǔ)言2-初識(shí)算法

數(shù)據(jù)結(jié)構(gòu)與算法-目錄

什么是算法呢?

算法是解決特定問(wèn)題求解步驟的描述,在計(jì)算機(jī)中表現(xiàn)為指令的有線序列,并且每條指定表示一個(gè)或多個(gè)操作。
簡(jiǎn)單理解就是寫(xiě)程序的技巧和方式。

  • 對(duì)于給定的問(wèn)題,是可以有多種算法來(lái)解決的。
  • 一個(gè)算法也不能有通解所有問(wèn)題
  • 算法有效率高低之別

算法的特性

算法具有五個(gè)基本特征:輸入、算法、有窮性、確定性、可行性。

輸入
  • 算法具有零個(gè)或多個(gè)輸入。
  • 盡管對(duì)于絕大多數(shù)算法來(lái)說(shuō),輸入?yún)?shù)都是必要的。
    但是有些時(shí)候,像打印"I love coding",就不需要啥參數(shù)。
void print(){
printf("I love coding\n");
}
輸出
  • 算法至少有一個(gè)或多個(gè)輸出。
  • 算法是一定要輸出的,輸出的形式可以是打印形式輸出,也可以是返回一個(gè)值或多個(gè)值。
有窮性
  • 指算法在執(zhí)行有限的步驟之后,自動(dòng)結(jié)束而不會(huì)出現(xiàn)無(wú)限循環(huán),并且每一個(gè)步驟在可接受的時(shí)間內(nèi)完成。
確定性
  • 算法的每一步驟都具有確定的含義,不會(huì)出現(xiàn)二異性。
  • 算法在一定條件下,只有一條執(zhí)行路徑,相同的輸入只能有唯一的輸出結(jié)果。
  • 算法的每個(gè)步驟都應(yīng)該被精確定義而無(wú)歧義
可行性
  • 算法的每一步都必須是可行的,也就是說(shuō),每一步都能通過(guò)執(zhí)行有限次數(shù)完成。

算法設(shè)計(jì)的要求

正確性
  • 算法至少應(yīng)該具有輸入、輸出和加工處理無(wú)歧義性、能正確放映問(wèn)題的需求、能夠得到問(wèn)題的正確答案。
    大體分為以下四個(gè)層次:
    算法程序沒(méi)有語(yǔ)法錯(cuò)誤。
    算法程序?qū)τ诤戏ㄝ斎肽軌虍a(chǎn)生滿足要求的輸出。
    算法程序?qū)τ诜欠ㄝ斎肽軌虍a(chǎn)生滿足規(guī)格的說(shuō)明。
    算法程序?qū)τ诠室獾箅y的測(cè)試輸入都有滿足要求的輸出結(jié)果。
可讀性
  • 便于閱讀、理解和交流。
    我么寫(xiě)代碼的目的,一方面是為了讓計(jì)算機(jī)執(zhí)行,但還有一個(gè)重要的目的是為了便于他人閱讀和自己日后閱讀修改。
健壯性
  • 當(dāng)輸入數(shù)據(jù)不合法時(shí),算法也能做出相關(guān)處理,而不是產(chǎn)生異?;蚰涿畹慕Y(jié)果。
時(shí)間效率高和存儲(chǔ)量低
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容