學(xué)習(xí) Python 數(shù)據(jù)結(jié)構(gòu)與算法,這是我見(jiàn)過(guò)最友好的教程
Pascal 之父 Nicklaus Wirth 曾說(shuō):“程序=數(shù)據(jù)結(jié)構(gòu)+算法?!?
在《算法(第4版)》中,作者也說(shuō)過(guò):“數(shù)據(jù)結(jié)構(gòu)和算法的學(xué)習(xí)是計(jì)算機(jī)科學(xué)和軟件工程領(lǐng)域的基礎(chǔ),它們對(duì)于解決實(shí)際問(wèn)題和優(yōu)化程序性能至關(guān)重要?!?/p>
數(shù)據(jù)結(jié)構(gòu)與算法的重要性不言而喻,對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生,更是不陌生。作為兩門(mén)必學(xué)的課程,如果有同學(xué)立志做好技術(shù),那數(shù)據(jù)結(jié)構(gòu)與算法的學(xué)習(xí)是怎么都繞不開(kāi)的坎。
隨手搜索知乎,還是有不少人提問(wèn):“如何系統(tǒng)地學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法?”“如何在最短時(shí)間內(nèi)搞定數(shù)據(jù)結(jié)構(gòu)與算法,應(yīng)付面試?”甚至有人問(wèn)出:“數(shù)據(jù)結(jié)構(gòu)與算法學(xué)起來(lái)很吃力很絕望,感覺(jué)腦子不開(kāi)竅,刷題也只會(huì)簡(jiǎn)單等級(jí)的題,是不是不適合程序員這個(gè)行業(yè)?”這樣的問(wèn)題。
綜合網(wǎng)上的各種問(wèn)答來(lái)看,不管學(xué)習(xí)的目的是什么。數(shù)據(jù)結(jié)構(gòu)與算法仍然是學(xué)生黨認(rèn)為的老大難課程。更有同學(xué)直接吐槽:“計(jì)算機(jī)專業(yè)全憑自學(xué),教學(xué)知識(shí)落伍,一個(gè) VC6.0 用一萬(wàn)年。”
盡管網(wǎng)上有很多教程,但依舊有很多初學(xué)者摸不到頭緒。為了幫助初學(xué)者解決入門(mén)困難問(wèn)題,今天給大家推薦一本比教材更友好的《Python數(shù)據(jù)結(jié)構(gòu)與算法分析(第3版)》。這本書(shū)是經(jīng)典的計(jì)算機(jī)教材,被華盛頓大學(xué)、北京大學(xué)等多家高校采用,使用當(dāng)下流行的 Python 語(yǔ)言,扎實(shí)的理論+豐富的案例,學(xué)習(xí)無(wú)壓力。

(新書(shū)上市,限時(shí)?5 折)

內(nèi)容對(duì)初學(xué)者友好,開(kāi)篇介紹了基于大?O?計(jì)法的算法分析,并通篇運(yùn)用,使用 Python 3 講解,語(yǔ)法干凈。深入淺出,理論扎實(shí),案例豐富。每章還配有練習(xí)題,方便鞏固學(xué)習(xí)。
全書(shū)六大模塊,涵蓋數(shù)據(jù)結(jié)構(gòu)與算法的方方面面。

第2版讀者評(píng)價(jià)
@李鑾珂:寫(xiě)的挺好,大二在課上學(xué)懵懵懂懂,大三下自己再看一遍感覺(jué)打通了,不過(guò)還剩下一點(diǎn)點(diǎn)尾巴沒(méi)學(xué)完,明年回來(lái)補(bǔ)上。
@Colin:實(shí)戰(zhàn)性非常強(qiáng)的一本書(shū)。抽象的數(shù)據(jù)結(jié)構(gòu)和算法,結(jié)合直觀形象的示意圖,加上誠(chéng)意十足的示例代碼,一口氣讀下來(lái),很多以前想做但是沒(méi)什么頭緒的問(wèn)題,忽然就思路明朗了起來(lái)。已經(jīng)用書(shū)里的思想實(shí)現(xiàn)了圖論中的 Dijkstra 算法解決最短路徑問(wèn)題、Route Inspection 算法解決郵遞員問(wèn)題,感覺(jué)棒棒噠。但現(xiàn)在知道目前的水平只是初窺計(jì)算機(jī)科學(xué)的奧妙,以后要繼續(xù)加油!@東川路老實(shí)豪:B 站上面有北大陳斌老師的配套網(wǎng)課,配合起來(lái)學(xué)還是非常不錯(cuò)的。在這里也要推薦一下北京大學(xué)陳斌老師的 B 站課程,是北京大學(xué)的課程實(shí)錄。這套課程用的教材正是這本書(shū),大家可以用圖書(shū)搭配視頻學(xué)習(xí),就不用擔(dān)心自己學(xué)不會(huì)了。(課程網(wǎng)址:https://space.bilibili.com/275008758/channel/collectiondetail?sid=1170540)

本書(shū)內(nèi)容設(shè)置
全書(shū)一共 8 章內(nèi)容。第 1 章通過(guò)復(fù)習(xí)計(jì)算機(jī)科學(xué)、問(wèn)題解決、面向?qū)ο缶幊桃约?Python 來(lái)準(zhǔn)備背景知識(shí)?;A(chǔ)扎實(shí)的同學(xué)可以概覽第 1 章,快速進(jìn)入第 2 章。
第 2 章介紹算法分析的內(nèi)在思想,同時(shí)強(qiáng)調(diào)大?O?記法,還將分析本書(shū)一直使用的重要 Python 數(shù)據(jù)結(jié)構(gòu)。這可以幫助大家理解各種抽象數(shù)據(jù)類型不同實(shí)現(xiàn)之間的權(quán)衡。第 2 章也包含了在運(yùn)行時(shí)使用的 Python 原生類型的實(shí)驗(yàn)測(cè)量例子。
第 3~7 章全面介紹在經(jīng)典計(jì)算機(jī)科學(xué)問(wèn)題中出現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法。盡管在閱讀順序上并無(wú)嚴(yán)格要求,但是許多話題之間存在一定的依賴關(guān)系,所以應(yīng)該按照本書(shū)的順序?qū)W習(xí)。比如,第 3 章介紹棧,第 4 章利用棧解釋遞歸,第 5 章利用遞歸實(shí)現(xiàn)二分搜索。
第 8 章是選學(xué)內(nèi)容,包含彼此獨(dú)立的幾節(jié)。每一節(jié)都與之前的某一章有關(guān)。正如前面的組織結(jié)構(gòu)圖所示,既可以在學(xué)習(xí)完第 7 章以后再一起學(xué)習(xí)第 8 章中的各節(jié)內(nèi)容,也可以把它們與對(duì)應(yīng)的那一章放在一起學(xué)習(xí)。

第?3 版內(nèi)容更新
源代碼遵循 PEP 8 Python 編程規(guī)范。
用 pythonds 3 包(其中包含眾多算法以及數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn))取代了 pythonds 包。
書(shū)中提供的示例和代碼打包放至 GitHub 倉(cāng)庫(kù)(psads/psadspy-src)。
章末的編程練習(xí)和討論問(wèn)題合并成了練習(xí),讀者可以自行決定是否需要討論或者實(shí)現(xiàn)。
根據(jù)讀者反饋進(jìn)行了眾多澄清和改正。
作譯者簡(jiǎn)介
布拉德利·N. 米勒(Bradley N. Miller)美國(guó)路德學(xué)院計(jì)算機(jī)科學(xué)名譽(yù)教授,曾獲美國(guó)計(jì)算機(jī)協(xié)會(huì)軟件系統(tǒng)獎(jiǎng),對(duì) Python 課程開(kāi)發(fā)有深入研究,由他創(chuàng)立的互動(dòng)式教科書(shū)平臺(tái) Runestone Interactive 與全球 600 多家教育機(jī)構(gòu)有合作。
戴維·L. 拉努姆(David L. Ranum)Merative 高級(jí)科學(xué)家,醫(yī)學(xué)信息學(xué)博士,致力于利用自然語(yǔ)言處理等人工智能技術(shù)解決醫(yī)療問(wèn)題,曾在美國(guó)路德學(xué)院講授計(jì)算機(jī)科學(xué)課程近三十載。
羅曼·亞西諾夫斯基(Roman Yasinovskyy)美國(guó)路德學(xué)院計(jì)算機(jī)科學(xué)系主任、副教授,授課范圍涵蓋算法、Web 開(kāi)發(fā)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)管理系統(tǒng)、操作系統(tǒng)、計(jì)算機(jī)體系結(jié)構(gòu)以及信息安全等課程。博士畢業(yè)于陶森大學(xué)應(yīng)用信息技術(shù)專業(yè)。
譯者呂能:StreamNative 計(jì)算技術(shù)負(fù)責(zé)人,開(kāi)源項(xiàng)目 Apache Pulsar、Apache Heron 的核心貢獻(xiàn)者。先后在浙江大學(xué)和美國(guó)加州大學(xué)洛杉磯分校取得計(jì)算機(jī)科學(xué)學(xué)士學(xué)位和碩士學(xué)位,關(guān)注分布式實(shí)時(shí)數(shù)據(jù)引擎系統(tǒng)的研發(fā),熱衷于普及計(jì)算機(jī)技術(shù)知識(shí)。曾任 Twitter 資深工程師。
刁壽鈞:騰訊優(yōu)圖實(shí)驗(yàn)室團(tuán)隊(duì) 11 級(jí)工程師,畢業(yè)于復(fù)旦大學(xué)。目前聚焦于騰訊云人工智能平臺(tái)的建設(shè)。曾協(xié)助組織 IMG 社區(qū)的技術(shù)沙龍活動(dòng)。另譯有《數(shù)據(jù)分析實(shí)戰(zhàn)》。
大咖推薦
本書(shū)是一本必讀的 Python 指南,透徹講解了在 Python 環(huán)境下實(shí)現(xiàn)各類高效算法的方法。作者凝聚多年實(shí)戰(zhàn)經(jīng)驗(yàn),將數(shù)據(jù)結(jié)構(gòu)、遞歸、搜索、排序、樹(shù)與圖等內(nèi)容生動(dòng)呈現(xiàn)。對(duì)于所有 Python 程序員,本書(shū)是在 Python 基礎(chǔ)上學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的優(yōu)秀資源,值得一讀。
——崔慶才,微軟(中國(guó))工程師,《Python 3網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)實(shí)戰(zhàn)》作者
我一直采用本書(shū)原版教材講授數(shù)據(jù)結(jié)構(gòu)與算法課程,很高興看到本書(shū)中文版第 3 版出版,讓更多學(xué)生能夠無(wú)障礙閱讀這本優(yōu)秀的教材。本書(shū)采用 Python 語(yǔ)言,深入淺出地介紹了常用的數(shù)據(jù)結(jié)構(gòu)及算法,語(yǔ)言使用規(guī)范,案例豐富,應(yīng)用情境取材廣泛,很有啟發(fā)性。在多年的教學(xué)實(shí)踐中,本書(shū)深受學(xué)生歡迎,相信它能幫助更多 Python 學(xué)習(xí)者提升算法能力。
——陳斌,北京大學(xué)地球與空間科學(xué)學(xué)院教授,北京市高等學(xué)校教學(xué)名師
