- 秒懂算法:用常識(shí)解讀數(shù)據(jù)結(jié)構(gòu)與算法
- (美)杰伊·溫格羅
- 504字
- 2022-10-08 17:10:06
第2章 算法為何重要
在第1章中,我們學(xué)習(xí)了兩個(gè)基本的數(shù)據(jù)結(jié)構(gòu),還了解了選擇正確數(shù)據(jù)結(jié)構(gòu)對(duì)代碼性能的影響。即便是數(shù)組和集合這樣看起來(lái)很相似的數(shù)據(jù)結(jié)構(gòu),效率也可能有所區(qū)別。
在本章中,你會(huì)發(fā)現(xiàn),即便選定了數(shù)據(jù)結(jié)構(gòu),也還有一個(gè)重要因素影響代碼效率:合適的算法。
算法這個(gè)詞聽(tīng)起來(lái)有些復(fù)雜,其實(shí)并不然。算法就是完成特定任務(wù)所需的一組操作。
即便是泡一碗麥片這樣的簡(jiǎn)單過(guò)程也是算法,因?yàn)榕蓰溒残枰凑找欢ú襟E來(lái)完成。泡麥片算法有以下4個(gè)步驟(至少對(duì)我來(lái)說(shuō)是這樣)。
(1) 拿一個(gè)碗。
(2) 把麥片倒進(jìn)碗里。
(3) 把牛奶倒進(jìn)碗里。
(4) 把勺子放進(jìn)碗里。
按照特定順序執(zhí)行這些步驟,就能享受早餐了。
對(duì)計(jì)算機(jī)來(lái)說(shuō),算法指的是計(jì)算機(jī)為完成特定任務(wù)所執(zhí)行的一組指令。寫代碼就是創(chuàng)造算法以讓計(jì)算機(jī)執(zhí)行的過(guò)程。
也可以用文字來(lái)詳細(xì)描述想讓計(jì)算機(jī)執(zhí)行的指令。本書(shū)將同時(shí)使用文字和代碼來(lái)展示不同算法的工作原理。
有時(shí),兩個(gè)不同的算法可能要完成同一項(xiàng)任務(wù)。第1章開(kāi)頭有一個(gè)例子,介紹了兩種打印偶數(shù)的方法,其中一種需要的步驟數(shù)是另一種的兩倍。
本章會(huì)介紹另外兩個(gè)解決相同問(wèn)題的算法。然而這一次,一個(gè)算法會(huì)比另外一個(gè)快一個(gè)數(shù)量級(jí)。
在探索這兩個(gè)新算法前,先來(lái)看一個(gè)新的數(shù)據(jù)結(jié)構(gòu)。
- LaTeX Cookbook
- ClickHouse性能之巔:從架構(gòu)設(shè)計(jì)解讀性能之謎
- 復(fù)雜軟件設(shè)計(jì)之道:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)全面解析與實(shí)戰(zhàn)
- Visual Basic程序開(kāi)發(fā)(學(xué)習(xí)筆記)
- Vue.js前端開(kāi)發(fā)基礎(chǔ)與項(xiàng)目實(shí)戰(zhàn)
- PostgreSQL技術(shù)內(nèi)幕:事務(wù)處理深度探索
- Big Data Analytics
- 低代碼平臺(tái)開(kāi)發(fā)實(shí)踐:基于React
- Terraform:多云、混合云環(huán)境下實(shí)現(xiàn)基礎(chǔ)設(shè)施即代碼(第2版)
- Machine Learning for OpenCV
- 微前端設(shè)計(jì)與實(shí)現(xiàn)
- Modular Programming with JavaScript
- Software-Defined Networking with OpenFlow(Second Edition)
- Unreal Engine Game Development Cookbook
- jQuery Essentials