書名:演算法 (Levitin:Introduction to the Design and Analysis of Algorithms, 2/e)
作者:莊承翃(Levitin 2/E)
出版社:高立
出版日期:2009/04/01
ISBN:9789864125555
內容簡介
本書主要著重於那些隱藏在演算法設計和分析背後的主要觀念。
在書中分別分析非遞迴演算法和遞迴演算法兩種方法之效率。
第二章中特別介紹演算法實證分析以及演算法之可視化。
書中有系統地為讀者精心設計一些問題,希望引起讀者的注意與更進一步的思考。
每一章結束時都會對本章最重要的概念和結論做一個總結。
本書包含大約600道習題,並且都附有提示。其中,謎題類的習題均以特殊的圖示加以標註。
本書的創新是引入了一些數值演算法的內容,這些演算法也包含在相同的通用框架之中。
目錄
第一章 緒 論
第二章 演算法效率分析的基本原則
第三章 暴力法
第四章 分解征服法
第五章 縮減征服法
第六章 轉換征服法
第七章 時空取捨法
第八章 動態規劃
第九章 貪婪法
第十章 反覆改進
第十一章 演算法能力的極限
第十二章 超越演算法能力的極限
結 語
附錄A 演算法分析的實用公式
附錄B 遞迴關係之簡明教學
習題提示
索 引
立即查看
演算法 圖解原理 x Python實作x創意應用王者歸來 (1版)
類似書籍推薦給您
立即查看
圖解演算法 : 每個人都要懂一點演算法與資料結構
類似書籍推薦給您
書名:圖解演算法|每個人都要懂一點演算法與資料結構
出版社:碁峰
出版年月:201912
條碼:9789865023461
內容簡介
讓演算法不再讓人畏懼。
‧從基本資料結構,到各類排序演算法、面試的演算法題目,再到職場上的應用,跟著書中的主角帶領大家逐一破解。
‧領悟演算法概念、理解演算法對記憶體空間和效能的影響,動腦尋求解決問題的最佳方案。
這本書透過漫畫圖解的形式,講述了書中主角小灰學習演算法和資料結構知識的心路歷程。本書的前4章是對演算法與資料結構基礎知識的講解,沒有演算法和資料結構基礎的讀者可以從頭開始進行有系統的學習。第5章則是職場面試題目的講解,讓讀者了解目前職場中程式設計師所關心的演算法是什麼。第6章則是介紹了演算法在職場上的一些實際應用情況。
本書結構
第1章 介紹演算法和資料結構的相關概念,告訴大家演算法是什麼,資料結構又是什麼,它們有哪些用途,如何分析時間複雜度,如何分析空間複雜度。
第2章 介紹基本的資料結構,包括陣列、鏈結串列、堆疊、佇列、雜湊表的概念和讀寫操作。
第3章 介紹樹和二元樹的概念、二元樹的各種遍訪方式、二元樹的特殊形式—二元堆積和優先佇列的應用。
第4章 介紹幾種典型的排序演算法,包括泡泡排序、快速排序、堆積排序、計數排序、桶排序。
第5章 介紹10餘道職場上流行的演算法面試題目及詳細的解題思維。例如怎樣判斷鏈結串列是否有環,怎樣計算大整數相加等。
第6章 介紹演算法在職場上的一些應用,例如使用LRU演算法來淘汰很少用到資料,使用Bitmap演算法來統計使用者特徵等。
作者介紹
作者簡介
魏夢舒(@程序员小灰)
微信公眾號(@程序员小灰)的作者,多年的軟體行業從業經驗,先後在京東金融和摩拜科技從事研發工作,對演算法有一定的興趣和經驗。
目錄
第1章 演算法概述
第2章 資料結構基礎
第3章 樹
第4章 排序演算法
第5章 面試中的演算法
第6章 演算法的實際應用
立即查看
世界第一簡單的演算法: 圖解 ✕ 程式 ✕ 刷題機器人 (1版)
類似書籍推薦給您
【簡介】
傳統的演算法書籍太過枯燥無聊,裡面全是些看再多遍也看不懂的複雜理論、數學公式還有程式,光是翻幾頁就讓人哈欠連連,這對初學者而言就像在看外星文,而且有些程式概念很抽象,更是無法透過文字敘述就能理解。
本書透過生活化的舉例做引導,並避免無聊又複雜的敘述,目的就是希望讓讀者能像閱讀小說般地學會演算法概念。我相信最好的學習方式就是能回想起我們熟悉的事物,以範例來說明會讓你更容易回想。例如,當你忘記【陣列】與【鏈結串列】的差異時 (本書第 2 章的主題),只要回想到在電影院找座位就可以了。
本書內容精心挑選過,而且用生動有趣的手繪圖來輔助理解,所介紹的演算法都非常實用,希望能幫讀者奠定良好的基礎,以便將來學習更進階的演算法。
【目錄】
Ch01 二元搜尋法 (Binary Search) 與演算法執行時間
Ch02 選擇排序法 (Selection Sort)
Ch03 遞迴 (Recursion)
Ch04 Divide-and-Conquer 與快速排序法 (Quicksort)
Ch05 雜湊表 (Hash table)
Ch06 廣度優先搜尋 (Breadth-First Search)
Ch07 樹狀圖 (tree)
Ch08 平衡樹 (Balanced Tree)
Ch09 戴克斯特拉 (Dijkstra) 演算法
Ch10 貪婪演算法 (Greedy Algorithm)
Ch11 動態規劃演算法 (Dynamic Programming Algorithm)
Ch12 K-最近鄰演算法 (K-Nearest Neighbors Algorithm)
Ch13 進階之路:推薦十種演算法
附錄 A AVL 樹的效能
附錄 B NP-hard 問題
附錄 C 習題與解答
Bonus 客製化刷題機器人–驗證你的演算法學習成效
立即查看
圖解資料結構 × 演算法:運用 Python 結合 ChatGPT 輔助驗證及寫程式(暢銷回饋版) (2版)
類似書籍推薦給您
【簡介】
資料結構必備好書,暢銷回饋中!
AI 再進化!
使用 ChatGPT 高效率生成 Python 程式碼
資料結構是電腦科學領域中一門極為重要的基礎課程,對於從事資訊相關工作的專業人員而言,它具有不可忽視的價值。無論是在學術考試還是實際應用中,對資料結構的深入理解都至關重要。然而,對初學者而言,理解資料結構中的理論和演算法可能會帶來困難和挫折感。
本書的獨特之處在於使用豐富的圖例解釋相對複雜的理論,並以簡潔明瞭的方式詮釋資料結構理論。從基礎的概念開始,逐步使用 Python 語言解釋陣列、堆疊、鏈結串列、佇列、樹狀結構、圖形、排序、搜尋等重要主題。附錄中整理了資料結構相關的專有名詞,並提供了重要演算法的介紹和實作範例。
本書以簡潔有力、邏輯清晰的方式優化文句表達,並特別收集了大量習題,以確保讀者掌握各章節的學習成果。演算法節點盡量使用 Python 程式碼展示,而非虛擬碼形式。此外,本書還會展示由 ChatGPT 生成的程式碼。我們相信,ChatGPT 生成的程式碼具有簡潔性和精簡性,並能夠提供更好的解決方案。
◇特別提供◇
——————————————————
ChatGPT 生成程式碼
——————————————————
可與人工編寫程式碼相互比較作為參考!
|本書範例程式碼檔案,請至博碩官網下載|
本書特色
☑ 完整的內容結構和清晰的邏輯,豐富的圖例解說提高可讀性
☑ 使用 Python 語言實作資料結構理論,並透過範例程式碼深入解析
☑ 參閱國家考試題型設計難易適中的習題,立即檢驗學習效果
☑ 附錄彙整出資料結構相關的專有名詞,方便查詢加深學習印象
☑ 增加「ChatGPT 解決觀點」欄位,幫助理解提高學習效率
資料結構必備好書,暢銷回饋中!
本書以簡潔有力、邏輯清晰、圖例豐富的方式詮釋資料結構理論,並特別收集了大量習題,以確保讀者掌握各章節的學習成果。演算法節點盡量使用 Python 程式碼展示,而非虛擬碼形式。此外,本書還會展示由 ChatGPT 生成的程式碼。我們相信,ChatGPT 生成的程式碼具有簡潔性和精簡性,並能夠提供更好的解決方案。
【目錄】
Chapter 0 ChatGPT 與 Python 程式設計黃金 入門課
0-1 認識聊天機器人
0-1-1 聊天機器人的種類
0-2 ChatGPT 初體驗
0-2-1 註冊免費 ChatGPT 帳號
0-2-2 更換新的機器人
0-2-3 登出 ChatGPT
0-3 使用 ChatGPT 寫 Python 程式
0-3-1 利用 ChatGPT AI 撰寫 Python 程式
0-3-2 複製 ChatGPT 幫忙寫的程式碼
0-3-3 ChatGPT AI 程式與人工撰寫程式的比較
0-4 ChatGPT AI Python 程式範例集
0-4-1 使用 Pygame 遊戲套件繪製多媒體圖案
0-4-2 以內建模組及模擬大樂透的開獎程式
0-4-3 建立四個主功能表的視窗應用程式
0-4-4 演算法的應用:寫一支迷宮問題的解決方案
0-4-5 海龜繪圖法繪製兩款精美的圖形
0-5 課堂上學不到的 ChatGPT 使用秘訣
0-5-1 能記錄對話內容
0-5-2 專業問題可事先安排人物設定腳本
0-5-3 目前只回答 2021 年前
0-5-4 善用英文及 Google 翻譯工具
0-5-5 熟悉重要指令
0-5-6 充份利用其它網站的 ChatGPT 相關資源
0-6 利用 ChatGPT 輕鬆開發 AI 小遊戲
0-6-1 請 ChatGPT 自我推薦以 Python 實作的小遊戲
0-6-2 猜數字遊戲
0-6-3 OX 井字遊戲
0-6-4 猜拳遊戲
0-6-5 牌面比大小遊戲
Chapter 1 資料結構與演算法入門
1-1 資料結構的定義
1-1-1 資料與資訊
1-1-2 資料的特性
1-1-3 資料結構的應用
1-2 演算法
1-2-1 演算法的條件
1-2-2 演算法的表現方式
1-3 常見演算法簡介
1-3-1 分治法
1-3-2 貪心法
1-3-3 枚舉法
1-3-4 巴斯卡三角形演算法
1-3-5 質數求解演算法
1-4 演算法效能分析
1-4-1 Big-oh
1-4-2 Ω(omega)
1-4-3 θ(theta)
Chapter 2 陣列結構
2-1 線性串列簡介
2-1-1 儲存結構簡介
2-2 認識陣列
2-2-1 二維陣列
2-2-2 三維陣列
2-2-3 n維陣列
2-3 矩陣
2-3-1 矩陣相加
2-3-2 矩陣相乘
2-3-3 轉置矩陣
2-3-4 稀疏矩陣
2-3-5 上三角形矩陣
2-3-6 下三角形矩陣
2-3-7 帶狀矩陣
2-4 陣列與多項式
2-4-1 認識多項式
Chapter 3 串列結構
3-1 單向串列
3-1-1 建立單向串列
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-2-4 環狀串列的連結
3-2-5 環狀串列與稀疏矩陣表示法
3-3 雙向串列
3-3-1 雙向串列建立與走訪
3-3-2 雙向串列加入新節點
3-3-3 雙向串列刪除節點
Chapter 4 堆疊
4-1 堆疊簡介
4-1-1 陣列實作堆疊
4-1-2 串列實作堆疊
4-2 堆疊的應用
4-2-1 遞迴演算法
4-2-2 動態規劃演算法
4-2-3 河內塔問題
4-2-4 回溯法-老鼠走迷宮
4-2-5 八皇后問題
4-3 算術運算式的表示法
4-3-1 中序轉為前序與後序
4-3-2 前序與後序轉為中序
4-3-3 中序表示法求值
4-3-4 前序法的求值運算
4-3-5 後序法的求值運算
Chapter 5 佇列
5-1 認識佇列
5-1-1 佇列的工作運算
5-1-2 佇列的應用
5-1-3 陣列實作佇列
5-1-4 串列實作佇列
5-2 環狀佇列、雙向佇列與優先佇列
5-2-1 環狀佇列
5-2-2 雙向佇列
5-2-3 優先佇列
Chapter 6 樹狀結構
6-1 樹的基本觀念
6-1-1 樹專有名詞簡介
6-2 二元樹簡介
6-2-1 二元樹的定義
6-2-2 特殊二元樹簡介
6-3 二元樹的儲存方式
6-3-1 一維陣列表示法
6-3-2 串列表示法
6-4 二元樹走訪
6-4-1 中序走訪
6-4-2 後序走訪
6-4-3 前序走訪
6-4-4 二元樹節點的插入與刪除
6-4-5 二元運算樹
6-5 引線二元樹
6-5-1 二元樹轉為引線二元樹
6-6 樹的二元樹表示法
6-6-1 樹化為二元樹
6-6-2 二元樹轉換成樹
6-6-3 樹林化為二元樹
6-6-4 二元樹轉換成樹林
6-6-5 樹與樹林的走訪
6-6-6 決定唯一二元樹
6-7 最佳化二元搜尋樹
6-7-1 延伸二元樹
6-7-2 霍夫曼樹
6-8 平衡樹
6-8-1 平衡樹的定義
6-9 進階樹狀結構的應用
6-9-1 決策樹
6-9-2 B樹
6-9-3 二元空間分割樹(BSP)
6-9-4 四元樹 / 八元樹
Chapter 7 圖形結構
7-1 圖形簡介
7-1-1 尤拉環與尤拉鏈
7-1-2 圖形的定義
7-1-3 無向圖形
7-1-4 有向圖形
7-2 圖形的資料表示法
7-2-1 相鄰矩陣法
7-2-2 相鄰串列法
7-2-3 相鄰複合串列法
7-2-4 索引表格法
7-3 圖形的走訪
7-3-1 先深後廣法
7-3-2 先廣後深搜尋法
7-4 擴張樹
7-4-1 DFS擴張樹及BFS擴張樹
7-4-2 最小花費擴張樹
7-4-3 Kruskal演算法
7-4-4 Prim演算法
7-5 圖形最短路徑
7-5-1 單點對全部頂點
7-5-2 兩兩頂點間的最短路徑
7-5-3 A* 演算法
7-6 AOV網路與拓樸排序
7-6-1 拓樸序列簡介
7-7 AOE網路
7-7-1 臨界路徑
Chapter 8 排序演算法
8-1 認識排序
8-1-1 排序的分類
8-1-2 排序演算法分析
8-2 內部排序法
8-2-1 氣泡排序法
8-2-2 雞尾酒排序法
8-2-3 選擇排序法
8-2-4 插入排序法
8-2-5 謝耳排序法
8-2-6 合併排序法
8-2-7 快速排序法
8-2-8 堆積排序法
8-2-9 基數排序法
Chapter 9 搜尋演算法與雜湊函數
9-1 常見搜尋演算法
9-1-1 循序搜尋法
9-1-2 二分搜尋法
9-1-3 內插搜尋法
9-1-4 費氏搜尋法
9-2 雜湊搜尋法
9-2-1 雜湊法簡介
9-3 常用的雜湊函數
9-3-1 除法
9-3-2 中間平方法
9-3-3 折疊法
9-3-4 數位分析法
9-4 碰撞與溢位問題的處理
9-4-1 線性探測法
9-4-2 平方探測法
9-4-3 再雜湊法
9-4-4 鏈結串列法
附錄A 資料結構專有名詞索引
立即查看
圖解資料結構 × 演算法:運用C語言(暢銷回饋版) (2版)
類似書籍推薦給您
【簡介】
學習資料結構與演算法的好書,暢銷回饋中!
資料結構是有志從事資訊工作的專業人員,不得不重視的一門基礎課程。對於第一次接觸資料結構課程的初學者來說,過多的內容及不清楚的表達常是造成學習障礙的最主要原因。本書是以C程式語言實作來解說資料結構概念的入門書,內容淺顯易懂,藉由豐富圖例來闡述基本概念,將重要理論、演算法做最意簡言明的詮釋及舉例,同時配合完整的範例程式碼,期能透過實作來熟悉資料結構。因此,這是一本兼具內容及專業的資料結構教學用書。
【本書特色】
※內容架構完整,邏輯清楚,採用豐富的圖例來闡述基本觀念及應用,有效提高可讀性。
※以C語言實作資料結構中的重要理論,以範例程式說明資料結構的內涵。
※強調邊作邊學:提供書中範例完整程式檔,給予最完整的支援,加深學習記憶。
※驗收學習成果:參閱國家考試題型,設計難易適中的習題,提供進一步演練。
【重點主題】
◆ 資料結構入門與演算法
◆ 陣列結構 / 串列結構
◆ 堆疊 / 佇列
◆ 樹狀結構 / 圖形結構
◆ 排序演算法
◆ 搜尋演算法與雜湊函數
◆ 資料結構專有名詞
【目錄】
Chapter 1 資料結構入門與演算法
1-1 資料結構的定義
1-1-1 資料與資訊
1-1-2 資料的特性
1-1-3 資料結構的應用
1-2 演算法
1-2-1 演算法的條件
1-2-2 演算法的表現方式
1-3 常見演算法簡介
1-3-1 分治法
1-3-2 貪心法
1-3-3 枚舉法
1-3-4 巴斯卡三角形演算法
1-3-5 質數求解演算法
1-4 演算法效能分析
1-4-1 Big-oh
1-4-2 Ω(omega)
1-4-3 θ(theta)
Chapter 2 陣列結構
2-1 線性串列簡介
2-1-1 儲存結構簡介
2-2 認識陣列
2-2-1 二維陣列
2-2-2 三維陣列
2-2-3 n 維陣列
2-3 矩陣
2-3-1 矩陣相加
2-3-2 矩陣相乘
2-3-3 轉置矩陣
2-3-4 稀疏矩陣
2-3-5 上三角形矩陣
2-3-6 下三角形矩陣
2-3-7 帶狀矩陣
2-4 陣列與多項式
2-4-1 認識多項式
Chapter 3 串列結構
3-1 動態配置記憶體
3-1-1 動態配置變數
3-2 單向串列
3-2-1 建立單向串列
3-2-2 走訪單向串列
3-2-3 單向串列插入新節點
3-2-4 單向串列刪除節點
3-2-5 單向串列的反轉
3-2-6 單向串列的連結
3-2-7 多項式串列表示法
3-3 環狀串列結構
3-3-1 環狀串列的建立與走訪
3-3-2 環狀串列的插入節點
3-3-3 環狀串列的刪除節點
3-3-4 環狀串列的連結
3-3-5 稀疏矩陣的環狀串列表示法
3-4 雙向串列
3-4-1 雙向串列的建立與走訪
3-4-2 雙向串列加入新節點
3-4-3 雙向串列刪除節點
Chapter 4 堆疊
4-1 堆疊簡介
4-1-1 陣列實作堆疊
4-1-2 串列實作堆疊
4-2 堆疊的應用
4-2-1 遞迴演算法
4-2-2 動態規劃演算法
4-2-3 河內塔問題
4-2-4 回溯法-老鼠走迷宮
4-2-5 八皇后問題
4-3 算術運算式的表示法
4-3-1 中序轉為前序與後序
4-3-2 前序與後序轉為中序
4-3-3 中序表示法求值
4-3-4 前序表示法求值
4-3-5 後序表示法求值
Chapter 5 佇列
5-1 認識佇列
5-1-1 佇列的工作運算
5-1-2 佇列的應用
5-1-3 陣列實作佇列
5-1-4 串列實作佇列
5-2 環狀佇列、雙向佇列與優先佇列
5-2-1 環狀佇列
5-2-2 雙向佇列
5-2-3 優先佇列
Chapter 6 樹狀結構
6-1 樹的基本觀念
6-1-1 樹專有名詞簡介
6-2 二元樹簡介
6-2-1 二元樹的定義
6-2-2 特殊二元樹簡介
6-3 二元樹儲存方式
6-3-1 陣列表示法
6-3-2 串列表示法
6-4 二元樹走訪
6-4-1 中序走訪
6-4-2 後序走訪
6-4-3 前序走訪
6-4-4 二元樹節點插入與刪除
6-4-5 二元運算樹
6-5 引線二元樹
6-5-1 二元樹轉為引線二元樹
6-6 樹的二元樹表示法
6-6-1 樹化為二元樹
6-6-2 二元樹轉換成樹
6-6-3 樹林化為二元樹
6-6-4 二元樹轉換成樹林
6-6-5 樹與樹林的走訪
6-6-6 決定唯一二元樹
6-7 最佳化二元搜尋樹
6-7-1 延伸二元樹
6-7-2 霍夫曼樹
6-8 平衡樹
6-8-1 平衡樹的定義
6-9 進階樹狀結構的應用
6-9-1 決策樹
6-9-2 B 樹
6-9-3 二元空間分割樹(BSP)
6-9-4 四元樹/八元樹
Chapter 7 圖形結構
7-1 圖形簡介
7-1-1 尤拉環與尤拉鏈
7-1-2 圖形的定義
7-1-3 無向圖形
7-1-4 有向圖形
7-2 圖形的資料表示法
7-2-1 相鄰矩陣法
7-2-2 相鄰串列法
7-2-3 相鄰複合串列法
7-2-4 索引表格法
7-3 圖形的走訪
7-3-1 先深後廣法
7-3-2 先廣後深法
7-4 擴張樹簡介
7-4-1 DFS擴張樹及BFS擴張樹
7-4-2 最小花費擴張樹
7-4-3 Kruskal演算法
7-4-4 Prim演算法
7-5 圖形最短路徑
7-5-1 單點對全部頂點
7-5-2 兩兩頂點間的最短路徑
7-5-3 A*演算法
7-6 AOV網路與拓樸排序
7-6-1 拓樸序列簡介
7-7 AOE網路
7-7-1 臨界路徑
Chapter 8 排序演算法
8-1 認識排序
8-1-1 排序的分類
8-1-2 排序演算法分析
8-2 內部排序法
8-2-1 氣泡排序法
8-2-2 選擇排序法
8-2-3 插入排序法
8-2-4 謝耳排序法
8-2-5 合併排序法
8-2-6 快速排序法
8-2-7 堆積排序法
8-2-8 基數排序法
8-3 外部排序法
8-3-1 直接合併排序法
8-3-2 k 路合併法
Chapter 9 搜尋演算法與雜湊函數
9-1 常見搜尋演算法
9-1-1 循序搜尋法
9-1-2 二分搜尋法
9-1-3 內插搜尋法
9-1-4 費氏搜尋法
9-2 雜湊搜尋法
9-2-1 雜湊函數簡介
9-3 常見雜湊函數
9-3-1 除法
9-3-2 中間平方法
9-3-3 折疊法
9-3-4 數位分析法
9-4 碰撞與溢位處理
9-4-1 線性探測法
9-4-2 平方探測法
9-4-3 再雜湊法
9-4-4 鏈結串列法
附錄A 資料結構專有名詞索引
立即查看