1.2 程序的靈魂:算法
在開(kāi)始學(xué)習(xí)編程之前腮考,有必要先來(lái)了解一個(gè)重要的概念——算法。
什么是“算法”玄捕?聽(tīng)起來(lái)很深?yuàn)W的樣子踩蔚。簡(jiǎn)單來(lái)說(shuō),算法枚粘,就是解決問(wèn)題馅闽、實(shí)現(xiàn)目標(biāo)的方法。每當(dāng)我們想要去做一件事(也就是實(shí)現(xiàn)某個(gè)目標(biāo))的時(shí)候馍迄,我們都會(huì)先想一想該怎么做(方法)福也,這里說(shuō)的方法,就是算法攀圈。
我們做事的目標(biāo)不同暴凑,算法也就不同。即使是同一個(gè)目標(biāo)赘来,也會(huì)有好幾種方法现喳。而算法要解決的問(wèn)題就是“按什么順序凯傲,做什么事情,效率才會(huì)最高嗦篱?”
這里舉個(gè)簡(jiǎn)單的例子冰单,假設(shè)你平時(shí)都騎自行車上學(xué),今天早上一出門(mén)發(fā)現(xiàn)天下雨了灸促,你會(huì)怎么辦呢诫欠?這里能想到的有三種方法:
方法1:
- 回到家里,穿上雨衣
- 去地下室騎車
- 騎著自行車小心翼翼地騎去學(xué)校
方法2:
- 回到家里浴栽,拿上雨傘
- 打著傘走到班車集合點(diǎn)
- 坐學(xué)校的班車出發(fā)
方法3:
- 正好碰上鄰居豆豆的媽媽開(kāi)車送他上學(xué)荒叼,由于你們?cè)谝粋€(gè)學(xué)校,你直接坐上他家的車到達(dá)學(xué)校
上面三種方法吃度,哪一種效率最高呢甩挫?如果你是想以最快的速度到達(dá)學(xué)校,那一定是方法3椿每;如果你是想和許多好朋友一起去上學(xué),那么他可能會(huì)選擇方法2英遭;如果你是個(gè)自行車騎行愛(ài)好者间护,想鍛煉身體,也許會(huì)選擇方法1哦挖诸。
可見(jiàn)汁尺,算法的選擇,一定與目標(biāo)相關(guān)多律,我們應(yīng)該根據(jù)目標(biāo)去思考算法痴突。
算法和編程的關(guān)系
算法的概念清楚了,它和編程有怎樣的關(guān)系狼荞?
編程和算法之間有很緊密的關(guān)系辽装。作為一個(gè)人,面對(duì)要解決的具體問(wèn)題相味,我們會(huì)先思考算法拾积,再采取行動(dòng)。但是如果我們是想讓計(jì)算機(jī)去做這件事怎么辦呢丰涉?計(jì)算機(jī)只能按照指令運(yùn)行拓巧,所以,我們必須事先想好各種算法一死,然后用計(jì)算機(jī)能夠理解的指令把這種“算法”表達(dá)出來(lái),就變成了程序投慈,交給計(jì)算機(jī)去執(zhí)行承耿。反過(guò)來(lái)說(shuō),程序?qū)嶋H是在表達(dá)一種“算法”瘩绒,說(shuō)算法是程序的“靈魂”也不過(guò)分猴抹。
從這點(diǎn)出發(fā)锁荔,我們可以給“程序”再下一個(gè)準(zhǔn)確的定義——程序是將需要計(jì)算機(jī)執(zhí)行的算法按照一定順序?qū)懴聛?lái)的一系列指令蟀给。
編寫(xiě)程序,實(shí)現(xiàn)算法的過(guò)程阳堕,就是編程跋理。