發表於2024-12-22
Sedgewick之巨著,與高德納TAOCP一脈相承
幾十年多次修訂,經久不衰的暢銷書
涵蓋所有程序員必須掌握的50種算法
更多精彩,點擊進入品牌店查閱>>
第1章 基礎
1.1 基礎編程模型
1.1.1 Java程序的基本結構
1.1.2 原始數據類型與錶達式
1.1.3 語句
1.1.4 簡便記法
1.1.5 數組
1.1.6 靜態方法
1.1.7 API
1.1.8 字符串
1.1.9 輸入輸齣
1.1.10 二分查找
1.1.11 展望
1.2 數據抽象
1.2.1 使用抽象數據類型
1.2.2 抽象數據類型舉例
1.2.3 抽象數據類型的實現
1.2.4 更多抽象數據類型的實現
1.2.5 數據類型的設計
1.3 背包、隊列和棧
1.3.1 API
1.3.2 集閤類數據類型的實現
1.3.3 鏈錶
1.3.4 綜述
1.4 算法分析
1.4.1 科學方法
1.4.2 觀察
1.4.3 數學模型
1.4.4 增長數量級的分類
1.4.5 設計更快的算法
1.4.6 倍率實驗
1.4.7 注意事項
1.4.8 處理對於輸入的依賴
1.4.9 內存
1.4.10 展望
1.5 案例研究:union-find算法
1.5.1 動態連通性
1.5.2 實現
1.5.3 展望
第2章 排序
2.1 初級排序算法
2.1.1 遊戲規則
2.1.2 選擇排序
2.1.3 插入排序
2.1.4 排序算法的可視化
2.1.5 比較兩種排序算法
2.1.6 希爾排序
2.2 歸並排序
2.2.1 原地歸並的抽象方法
2.2.2 自頂嚮下的歸並排序
2.2.3 自底嚮上的歸並排序
2.2.4 排序算法的復雜度
2.3 快速排序
2.3.1 基本算法
2.3.2 性能特點
2.3.3 算法改進
2.4 優先隊列
2.4.1 API
2.4.2 初級實現
2.4.3 堆的定義
2.4.4 堆的算法
2.4.5 堆排序
2.5 應用
2.5.1 將各種數據排序
2.5.2 我應該使用哪種排序算法
2.5.3 問題的歸約
2.5.4 排序應用一覽
第3章 查找
3.1 符號錶
3.1.1 API
3.1.2 有序符號錶
3.1.3 用例舉例
3.1.4 無序鏈錶中的順序查找
3.1.5 有序數組中的二分查找
3.1.6 對二分查找的分析
3.1.7 預覽
3.2 二叉查找樹
3.2.1 基本實現
3.2.2 分析
3.2.3 有序性相關的方法與刪除操作
3.3 平衡查找樹
3.3.1 2-3查找樹
3.3.2 紅黑二叉查找樹
3.3.3 實現
3.3.4 刪除操作
3.3.5 紅黑樹的性質
3.4 散列錶
3.4.1 散列函數
3.4.2 基於拉鏈法的散列錶
3.4.3 基於綫性探測法的散列錶
3.4.4 調整數組大小
3.4.5 內存使用
3.5 應用
3.5.1 我應該使用符號錶的哪種實現
3.5.2 集閤的API
3.5.3 字典類用例
3.5.4 索引類用例
3.5.5 稀疏嚮量
第4章 圖
4.1 無嚮圖
4.1.1 術語錶
4.1.2 錶示無嚮圖的數據類型
4.1.3 深度優先搜索
4.1.4 尋找路徑
4.1.5 廣度優先搜索
4.1.6 連通分量
4.1.7 符號圖
4.1.8 總結
4.2 有嚮圖
4.2.1 術語
4.2.2 有嚮圖的數據類型
4.2.3 有嚮圖中的可達性
4.2.4 環和有嚮無環圖
4.2.5 有嚮圖中的強連通性
4.2.6 總結
4.3 最小生成樹
4.3.1 原理
4.3.2 加權無嚮圖的數據類型
4.3.3 最小生成樹的API和測試用例
4.3.4 Prim算法
4.3.5 Prim算法的即時實現
4.3.6 Kruskal算法
4.3.7 展望
4.4 最短路徑
4.4.1 最短路徑的性質
4.4.2 加權有嚮圖的數據結構
4.4.3 最短路徑算法的理論基礎
4.4.4 Dijkstra算法
4.4.5 無環加權有嚮圖中的最短路徑算法
4.4.6 一般加權有嚮圖中的最短路徑問題
4.4.7 展望
第5章 字符串
5.1 字符串排序
5.1.1 鍵索引計數法
5.1.2 低位優先的字符串排序
5.1.3 高位優先的字符串排序
5.1.4 三嚮字符串快速排序
5.1.5 字符串排序算法的選擇
5.2 單詞查找樹
5.2.1 單詞查找樹
5.2.2 單詞查找樹的性質
5.2.3 三嚮單詞查找樹
5.2.4 三嚮單詞查找樹的性質
5.2.5 應該使用字符串符號錶的哪種實現
5.3 子字符串查找
5.3.1 曆史簡介
5.3.2 暴力子字符串查找算法
5.3.3 Knuth-Morris-Pratt子字符串查找算法
5.3.4 Boyer-Moore字符串查找算法
5.3.5 Rabin-Karp指紋字符串查找算法
5.3.6 總結
5.4 正則錶達式
5.4.1 使用正則錶達式描述模式
5.4.2 縮略寫法
5.4.3 正則錶達式的實際應用
5.4.4 非確定有限狀態自動機
5.4.5 模擬NFA的運行
5.4.6 構造與正則錶達式對應的
5.5 數據壓縮
5.5.1 遊戲規則
5.5.2 讀寫二進製數據
5.5.3 局限
5.5.4 熱身運動:基因組
5.5.5 遊程編碼
5.5.6 霍夫曼壓縮
第6章 背景
索引
本書力圖研究當今最重要的計算機算法並將一些最基礎的技能傳授給廣大求知者。它適閤用做計算機科學進階教材,麵嚮已經熟悉瞭計算機係統並掌握瞭基本編程技能的學生。本書也可用於自學,或是作為開發人員的參考手冊,因為書中實現瞭許多實用算法並詳盡分析瞭它們的性能特點和用途。這本書取材廣泛,很適閤作為該領域的入門教材。
算法和數據結構的學習是所有計算機科學教學計劃的基礎,但它並不隻是對程序員和計算機係的學生有用。任何計算機使用者都希望計算機能運行得更快一些或是能解決更大規模的問題。本書中的算法代錶瞭近50年來的大量優秀研究成果,是人們工作中必備的知識。從物理中的N體模擬問題到分子生物學中的基因序列問題,我們描述的基本方法對科學研究而言已經必不可少;從建築建模係統到模擬飛行器,這些算法已經成為工程領域極其重要的工具;從數據庫係統到互聯網搜索引擎,算法已成為現代軟件係統中不可或缺的一部分。這僅是幾個例子而已,隨著計算機應用領域的不斷擴張,這些基礎方法的影響也會不斷擴大。
在開始學習這些基礎算法之前,我們先要熟悉全書中都將會用到的棧、隊列等低級抽象的數據類型。然後依次研究排序、搜索、圖和字符串方麵的基礎算法。最後一章將會從宏觀角度總結全書的內容。
獨特之處
本書緻力於研究有實用價值的算法。書中講解瞭多種算法和數據結構,並提供瞭大量相關的信息,讀者應該能有信心在各種計算環境下實現、調試並應用它們。本書的特點涉及以下幾個方麵。算法 書中均有算法的完整實現,並討論瞭程序在多個樣例上的運行狀況。書中的代碼都是可以運行的程序而非僞代碼,因此非常便於投入使用。書中程序是用Java語言編寫的,但其編程風格方便讀者使用其他現代編程語言重用其中的大部分代碼來實現相同算法。
數據類型
我們在數據抽象上采用瞭現代編程風格,將數據結構和算法封裝在瞭一起。
應用
每一章都會給齣所述算法起到關鍵作用的應用場景。這些場景多種多樣,包括物理模擬與分子生物學、計算機與係統工程學,以及我們熟悉的數據壓縮和網絡搜索等。
學術性
我們非常重視使用數學模型來描述算法的性能。我們用模型預測算法的性能,然後在真實的環境中運行程序來驗證預測。
廣度
本書討論瞭基本的抽象數據類型、排序算法、搜索算法、圖及字符串處理。我們在算法的討論中研究數據結構、算法設計範式、歸納法和解題模型。這將涵蓋20世紀60年代以來的經典方法以及近年來産生的新方法。
我們的主要目標是將今天最重要的實用算法介紹給盡可能廣泛的群體。這些算法一般都十分巧妙奇特,20行左右的代碼就足以錶達。它們展現齣的問題解決能力令人嘆為觀止。沒有它們,創造計算智能、解決科學問題、開發商業軟件都是不可能的。
本書網站
本書的一個亮點是它的配套網站algs4.cs.princeton.edu。這一網站麵嚮教師、學生和專業人士,免費提供關於算法和數據結構的豐富資料。
一份在綫大綱 包含瞭本書內容的結構並提供瞭鏈接,瀏覽起來十分方便。
全部實現代碼 書中所有的代碼均可以在這裏找到,且其形式適閤用於程序開發。此外,還包括算法的其他實現,例如高級的實現、書中提及的改進的實現、部分習題的答案以及多個應用場景的客戶端代碼。我們的重點是用真實的應用環境來測試算法。
習題與答案 網站還提供瞭一些附加的選擇題(隻需要一次單擊便可獲取答案)、很多算法應用的例子、編程練習和答案以及一些有挑戰性的難題。
動態可視化 書是死的,但網站是活的,在這裏我們充分利用圖形類演示瞭算法的應用效果。課程資料 網站包含和本書及網上內容對應的一整套幻燈片,以及一係列編程作業、核對錶、測試數據和備課手冊。
相關資料鏈接 網站包含大量的鏈接,提供算法應用的更多背景知識以及學習算法的其他資源。我們希望這個站點和本書互為補充。一般來說,建議讀者在第一次學習某種算法或是希望獲得整體概念時看書,並把網站作為編程時的參考或是在綫查找更多信息的起點。
作為教材
本書為計算機科學專業進階的教材,涵蓋瞭這門學科的核心內容,並能讓學生充分鍛煉編程、定量推理和解決問題等方麵的能力。一般來說,此前學過一門計算機方麵的先導課程就足矣,隻要熟悉一門現代編程語言並熟知現代計算機係統,就都能夠閱讀本書。
雖然本書使用Java實現算法和數據結構,但其代碼風格使得熟悉其他現代編程語言的人也能看懂。我們充分利用瞭Java的抽象性(包括泛型),但不會依賴這門語言的獨門特性。書中涉及的多數數學知識都有完整的講解(少數會有延伸閱讀),因此閱讀本書並不需要準備太多數學知識,不過有一定的數學基礎當然更好。應用場景都來自其他學科的基礎內容,同樣也在書中有完整介紹。
本書涉及的內容是任何準備主修計算機科學、電氣工程、運籌學等專業的學生應瞭解的基礎知識,並且對所有對科學、數學或工程學感興趣的學生也十分有價值。
背景介紹
這本書意在接續我們的一本基礎教材《Java程序設計:一種跨學科的方法》,那本書對計算機領域做瞭概括性介紹。這兩本書閤起來可用做兩到三個學期的計算機科學入門課程教材,為所有學生在自然科學、工程學和社會科學中解決計算問題提供必備的基礎知識。
本書大部分內容來自Sedgewick的算法係列圖書。本質上,本書和該係列的第1版和第2版最接近,但還包含瞭作者多年教學和學習的經驗。Sedgewick的《C算法(第3版)》、《C++算法(第3版)》、《Java算法(第3版)》更適閤用做參考書或是高級課程的教材,而本書則是專門為大學一、二年級學生設計的一學期教材,也是最新的基礎入門書或從業者的參考書。
緻謝
本書的編寫花瞭近40年時間,因此想要一一列齣所有參與人是不可能的。本書的前幾版一共列齣瞭好幾十人,其中包括(按字母順序)Andrew Appel、Trina Avery、Marc Brown、Lyn Dupré、PhilippeFlajolet、Tom Freeman、Dave Hanson、Janet Incerpi、Mike Schidlowsky、Steve Summit和Chris VanWyk。我要感謝他們所有人,盡管其中有些人的貢獻要追溯到幾十年前。至於第4版,我們要感謝試用瞭本書樣稿的普林斯頓及其他院校的數百名學生,以及通過本書網站發錶意見和指齣錯誤的世界各地的讀者。
我們還要感謝普林斯頓大學對於高質量教學的堅定支持,這是本書得以麵世的基礎。Peter Gordon幾乎從本書寫作之初就提齣瞭很多有用的建議,這一版奉行的“歸本溯源”的指導思想也是他最早提齣的。關於第4版,我們要感謝Barbara Wood認真又專業的編輯工作,Julie Nahil對生産過程的管理,以及Pearson齣版公司中為本書的付梓和營銷辛勤工作的朋友。所有人都在積極地追趕進度,而本書的質量並沒有受到絲毫影響。
算法 第4版 Algorithms Fourth Edition [Algorithms, Fourth Edition] 下載 mobi pdf epub txt 電子書 格式 2024
算法 第4版 Algorithms Fourth Edition [Algorithms, Fourth Edition] 下載 mobi epub pdf 電子書感覺不錯,價格也很公道,值的購買!
評分非常棒的一本書,算法的經典之作
評分挺好的東西就是這樣的事情
評分工作多年,算法要復習一下瞭,裏麵圖很多,推導過程詳細,還有mooc,非常棒
評分很好,質量沒問題,以後還會來。
評分618活動超值,囤瞭很多書,慢慢看吧,但願一年之後能看完
評分很剛哈更很剛哈更很剛哈更很剛哈更剛哈更很剛哈更很剛哈更很剛哈更很剛哈更剛哈更鏈接
評分非常實用的算法書,豐富的例題與代碼實例。認真學習將會十分有益~
評分人生需要精神食糧,閱讀就是最好的學習。多多讀書,多看世界。
算法 第4版 Algorithms Fourth Edition [Algorithms, Fourth Edition] mobi epub pdf txt 電子書 格式下載 2024