商品描述
本書首先介紹Python基礎知識,在帶領讀者編寫自定義類之前,先介紹關於選擇結構、循環結構和函數的基本編程概念和技術。然後介紹如何使用Python解決問題。不同難度的練習和問題涵蓋了多個有趣的應用領域。本書包含大量練習題,指導讀者創建高效、優雅的代碼,在實踐中掌握編程技巧。第3版新增了關於數據結構的內容,並 新了大量示例和練習。
作者簡介
Y. Daniel Liang:普度大學終身教授,阿姆斯特朗亞特蘭大州立大學計算機科學系教授。他所編寫的Java教程在美國大學Java課程中采用率 ,同時他還兼任Prentice Hall Java系列叢書的編輯。梁勇(Y. Daniel Liang),阿姆斯特朗亞特蘭大州立大學計算機科學系Yamacraw教授。之前曾是普渡大學計算機科學系副教授,並曾兩次獲得普渡大學大學傑出研究獎。他所編寫的Java教程在美國大學Java課程中采用率 。
目錄大綱
譯者序
前言
作者簡介
第15章 遞歸
15.1 概述
15.2 案例研究:計算階乘
15.3 案例研究:計算斐波那契數
15.4 使用遞歸求解問題
15.5 遞歸輔助函數
15.5.1 選擇排序算法
15.5.2 二分查找算法
15.6 案例研究:獲取目錄的大小
15.7 案例研究:漢諾塔
15.8 案例研究:分形圖形
15.9 案例研究:八皇後問題
15.10 遞歸和疊代的比較
15.11 尾遞歸
關鍵術語
本章總結
編程練習
第16章 開發高效的算法
16.1 概述
16.2 使用大O表示法衡量算法的效率
16.3 示例:確定大O表示法
16.4 分析算法的時間覆雜度
16.4.1 二分查找算法
16.4.2 選擇排序算法
16.4.3 漢諾塔問題算法
16.4.4 常見的遞推關系
16.4.5 比較常見的增長函數
16.5 使用動態規劃求解斐波那契數
16.6 使用歐幾裏得算法計算最大公約數
16.7 案例研究:尋找素數的高效算法
16.8 使用分而治之方法尋找距離最近的點對
16.9 使用回溯法求解八皇後問題
16.10 計算幾何:尋找一個凸包
16.10.1 禮品包裝算法
16.10.2 Graham算法
16.11 字符串匹配
16.11.1 窮舉算法
16.11.2 Boyer-Moore算法
16.11.3 Knuth-Morris-Pratt算法
關鍵術語
本章總結
編程練習
第17章 排序算法
17.1 概述
17.2 插入排序算法
17.3 冒泡排序算法
17.4 歸並排序算法
17.5 快速排序算法
17.6 堆排序算法
17.6.1 對堆進行排序
17.6.2 添加一個新的節點
17.6.3 移除根節點
17.6.4 Heap類
17.6.5 使用Heap類執行排序
17.6.6 堆排序算法的時間覆雜度
17.7 桶排序算法和基數排序算法
關鍵術語
本章總結
編程練習
第18章 鏈表、棧、隊列和優先級隊列
18.1 概述
18.2 鏈表
18.3 LinkedList類
18.4 實現LinkedList類
18.4.1 實現addFirst(e)
18.4.2 實現addLast(e)
18.4.3 實現insert(index,e)
18.4.4 實現removeFirst()
18.4.5 實現removeLast()
18.4.6 實現removeAt(index)
18.4.7 LinkedList的源代碼
18.5 列表和鏈表的比較
18.6 鏈表的變體
18.7 疊代器
18.8 生成器
18.9 棧
18.10 隊列
18.11 優先級隊列
18.12 案例研究:表達式求值
關鍵術語
本章總結
編程練習
第19章 二叉搜索樹
19.1 概述
19.2 二叉搜索樹基礎
19.3 二叉搜索樹的表示
19.4 在二叉搜索樹中搜索元素
19.5 在二叉搜索樹中插入一個元素
19.6 樹的遍歷
19.7 BST類
19.8 刪除二叉搜索樹中的元素
19.9 樹的可視化
19.10 案例研究:數據壓縮
關鍵術語
本章總結
編程練習
第20章 AVL樹
20.1 概述
20.2 重新平衡樹
20.3 為AVL樹設計類
20.4 重寫insert方法
20.5 實現旋轉操作
20.6 實現delete方法
20.7 AVLTree類
20.8 測試AVLTree類
20.9 AVL樹的最大高度
關鍵術語
本章總結
編程練習
第21章 哈希算法
21.1 概述
21.2 什麼是哈希
21.3 哈希函數和哈希碼
21.4 使用開放尋址處理沖突
21.4.1 線性探測
21.4.2 二次型探測
21.4.3 雙重哈希
21.5 使用分離鏈接處理沖突
21.6 負載因子和重新哈希
21.7 使用哈希算法實現映射
21.8 使用哈希算法實現集合
關鍵術語
本章總結
編程練習
第22章 圖及其應用
22.1 概述
22.2 基本的圖術語
22.3 圖的表示
22.3.1 頂點的表示
22.3.2 邊的表示:邊列表
22.3.3 邊的表示:Edge對象
22.3.4 邊的表示:鄰接矩陣
22.3.5 邊的表示:鄰接列表
22.4 圖的建模
22.5 圖的可視化
22.6 圖的遍歷
22.7 深度優先搜索
22.7.1 深度優先搜索算法
22.7.2 深度優先搜索算法的實現
22.7.3 深度優先搜索的應用
22.8 案例研究:連通圓問題
22.9 廣度優先搜索
22.9.1 廣度優先搜索算法
22.9.2 廣度優先搜索算法的實現
22.9.3 廣度優先搜索的應用
22.10 案例研究:九枚硬幣反面朝上問題
關鍵術語
本章總結
編程練習
第23章 加權圖及其應用
23.1 概述
23.2 加權圖的表示
23.2.1 邊列表
23.2.2 加權的鄰接列表
23.3 WeightedGraph類
23.4 最小生成樹
23.4.1 最小生成樹算法
23.4.2 改進Prim最小生成樹算法
23.4.3 最小生成樹算法的實現
23.5 尋找最短路徑
23.6 案例研究:加權的九枚硬幣反面朝上問題
關鍵術語
本章總結
編程練習
附錄A Python關鍵字
附錄B ASCII字符集
附錄C 數制系統
附錄D 命令行參數
附錄E 正則表達式
附錄F 位運算操作
附錄G 大O表示法
