TOP
從紙書中看見香港,指定港書滿888再折100
Python數據結構學習筆記(簡體書)
滿額折

Python數據結構學習筆記(簡體書)

商品資訊

人民幣定價:59.8 元
定價
:NT$ 359 元
優惠價
87312
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點 :9 點
商品簡介
作者簡介
名人推薦
目次

商品簡介

在計算機科學中,數據結構是一種數據組織、管理和存儲的格式;簡而言之,決定了數據順序和位置關係的便是數據結構,由此可見數據結構的重要性。本書以學習筆記的形式闡述了Python語言框架下的數據結構核心知識和應用實踐,尤其是對Python不同於其他語言的內置數據結構(線性表、隊列和棧、數、圖等)進行了重點講解,全書更多地通過實戰演練的形式將數據結構應用經驗融入實踐之中,旨在幫讀者透徹理解數據結構在編程實踐中的內涵,以期與算法實現融合,提升讀者編程內功。

作者簡介

張清云,浪潮集團企業云深圳研發中心高級工程師,精通Linux、Unix平臺開發,12年C++開發經驗,6年Python開發經驗,長期從事與ERP開發、大數據開發和數據分析工作。參與研發了浪潮云海OS系統,這是中國自主研發的云數據中心操作系統,深度融合OpenStack,是集數據分析、開放、融合、安全的云數據中心操作系統,支持廣泛的異構資源管理和跨云整合。

名人推薦

(1)以“入門到精通”的寫作方法構建內容,讓讀者入門容易。
(2)實例教學,經典並深入。
(3)視頻講解,二維碼布局全書。
(4)售後答疑幫助讀者快速解決學習問題。

從你開始學習編程的那一刻起,就注定了以後所要走的路:從編程學習者開始,依次經歷實習生、程序員、軟件工程師、架構師、CTO等職位的磨礪;當你站在職位頂峰的位置時驀然回首,會發現自己的成功並不是偶然,在程序員的成長之路上會有不斷修改代碼、尋找並解決Bug、不停測試程序和修改項目的經歷;不可否認的是,只要你在自己的開發生涯中穩扎穩打,並且善於總結和學習,最終將會得到可喜的收獲。

為什麼要學習數據結構

解決一個問題有很多種方法,但有些方法會比其他方法更好,學習數據結構和算法就是學習高質量的解決方案。著名的瑞士計算機科學家沃思(N.Wirth)教授一語中的:編程的本質是算法,而算法的本質是解決問題。程序設計的實質是對實際問題設計/選擇好的數據結構和好的算法。

數據結構是計算機運行體系中任何信息都必須遵守的生成與存儲規則,尤其是在編程語言的設計中,更體現著程序員對數據理解的透徹程度,其與算法的有效結合,對於提升代碼的運行效率,降低程序功耗至關重要。

本書的特色

(1)以“入門到精通”的寫作方法構建內容,讓讀者入門容易

為了使讀者能夠完全看懂本書的內容,本書遵循“入門到精通”基礎類圖書的寫法,循序漸進地講解這門開發語言的基本知識。

(2)實例教學,經典並深入

本書以實例教學為導向,通過具體實例講解了Python語言框架下數據結構的基本知識和核心用法。通過這些具體實例的講解和剖析,幫助讀者真正掌握Python數據結構的精髓和實踐技能。

(3)視頻講解,二維碼布局全書

本書正文的每一個二級目錄都有一個二維碼,通過掃描二維碼可以觀看講解視頻,既包括實例講解也包括教程講解,對讀者的開發水平實現了拔高處理。

(4)售後答疑幫助讀者快速解決學習問題

無論書中的疑惑,還是在學習中的問題,筆者將在第一時間為讀者解答問題,筆者更希望通過交流了解讀者的實際需求和本書的不足之處,以期提升圖書質量。

(5)QQ 群實現教學互動,形成互幫互學的朋友圈

為了方便給讀者答疑,特提供了QQ 群隨時在線與讀者互動,讓大家在互學互幫中形成一個良好的學習編程的氛圍。



本書的內容

本書通過學習筆記的形式(概念+ 實現思路+ 實戰演練)循序漸進、由淺入深地詳細講解了Python 語言數據結構的核心知識,全書共9 章,分別講解了數據結構基礎、算法、Python 內置的幾種數據結構、線性表、隊列和棧、樹、圖、數據結構的查找算法以及數據結構的排序算法。全書通過具體實例的實現過程,演練了各個知識點的具體使用方法和注意事項,引領讀者全面掌握數據結構的核心技術。



整體下載包

為了方便不同網絡環境的讀者學習,也為了提升圖書的附加價值,筆者將書中44 個掃碼視頻和源代碼整理成整體下載包,讀者可以通過封底二維碼和下載鏈接獲取學習。


本書的讀者物件

本書以學習筆記的形式系統講解了數據結構的核心知識,重點闡述了Python 語言實踐中的數據結構特點和實用技能,旨在幫助有一定經驗的初級程序員扎實理解數據結構原理及其在編程實踐中的重要性,並通過大量經典演練案例迅速積累經驗,提升編程能力。致謝本書在編寫過程中,得到了中國鐵道版社有限公司編輯的大力支持,正是各位編輯的求實、耐心和效率,才使得本書能夠在這麼短的時間內出版。另外,也十分感謝筆者的家人給予的巨大支持。由於水平有限,書中存在紕漏之處在所難免,誠請讀者提出寶貴的意見或建議,以便修訂並使之更臻完善。



最後感謝您購買本書,希望本書能成為您編程路上的領航者,祝您閱讀快樂!

目次

第1 章 數據結構基礎
1.1 數據結構 1
1.1.1 數據結構的核心技術 .1
1.1.2 數據結構的起源和發展現狀 .2
1.1.3 數據結構中的基本概念 .2
1.2 常用的數據結構和分類 3
1.2.1 數據結構的分類 .3
1.2.2 常用的數據結構 .6
1.3 數據類型和抽象數據類型 7
1.3.1 數據類型 .7
1.3.2 抽象數據類型 .7
第2 章 算法
2.1 算法是程序的靈魂 9
2.1.1 算法的定義 .9
2.1.2 算法的特征 .10
2.1.3 為什麼說算法是程序的靈魂 .10
2.1.4 認識計算機中的算法 .11
2.2 數據結構和算法的關係 12
2.3 在計算機中表示算法的方法 13
2.3.1 用流程圖來表示算法 .13
2.3.2 用N-S 流程圖來表示算法 .14
2.3.3 用計算機語言來表示算法 .15
2.4 時間復雜度 15
2.4.1 尋找最優算法 .16
2.4.2 常見算法的時間復雜度 .16
2.4.3 實戰演練——用Python 體驗時間復雜度 17
2.5 常用的算法思想 19
2.5.1 枚舉算法思想 .19
2.5.2 遞歸算法思想 .20
2.5.3 分治算法思想 .20
2.5.4 貪心算法思想 .20
2.5.5 試探法算法思想 .21
2.5.6 迭代算法 .22
第3 章 Python 內置的幾種數據結構
3.1 使用列表 23
3.1.1 列表的基本用法 .23
3.1.2 實戰演練——刪除列表中的重復元素並保持順序不變 .25
3.1.3 實戰演練——找出列表中出現次數最多的元素 .26
3.1.4 實戰演練——排序類定義的實例 .26
3.1.5 實戰演練——使用列表推導式 .27
3.1.6 實戰演練——命名切片 .28
3.2 使用元組 29
3.2.1 實戰演練——創建並訪問元組 .29
3.2.2 實戰演練——連接組合元組 .30
3.2.3 實戰演練——刪除元組 .30
3.2.4 實戰演練——使用內置方法操作元組 .31
3.2.5 實戰演練——將序列分解為單獨的變量 .31
3.2.6 實戰演練——將序列中的最後幾項作為歷史記錄 .33
3.2.7 實戰演練——實現優先級隊列 .33
3.3 使用字典 35
3.3.1 實戰演練——創建並訪問字典 .36
3.3.2 實戰演練——添加、修改、刪除字典中的元素 .36
3.3.3 實戰演練——映射多個值 .38
3.3.4 實戰演練——使用OrderedDict 類創建有序字典 .39
3.3.5 實戰演練——獲取字典中的最大值和最小值 .40
3.3.6 實戰演練——獲取兩個字典中的相同鍵值對 .41
3.3.7 實戰演練——使用函數itemgetter() 對字典進行排序 42
3.3.8 使用字典推導式 .43
3.3.9 實戰演練——根據記錄進行分組 .44
3.3.10 實戰演練——轉換並換算數據 .45
3.3.11 實戰演練——將多個映射合並為單個映射 .47
第4 章 線性表
4.1 線性表的定義和基本特征 49
4.1.1 線性表和線性結構 .49
4.1.2 線性表的基本操作過程 .50
4.2 順序表的基本操作 50
4.2.1 順序表的定義和操作 .50
4.2.2 實戰演練——建立空的順序表 .53
4.2.3 實戰演練——按值查找 .53
4.2.4 實戰演練——插入新元素 .54
4.2.5 實戰演練——刪除操作 .55
4.2.6 實戰演練——實現順序表的插入、檢索、刪除和反轉操作 .56
4.3 鏈表操作 59
4.3.1 什麼是鏈表 .59
4.3.2 實戰演練——Python 中的鏈表操作 .59
4.3.3 實戰演練——單向鏈表 .62
4.3.4 實戰演練——單向循環鏈表 .70
4.3.5 實戰演練——雙向鏈表 .75
4.3.6 實戰演練——雙向循環鏈表 .78
4.3.7 實戰演練——在鏈表中增加比較功能 .83
4.3.8 實戰演練——單鏈表結構字符串 .85
4.3.9 實戰演練——改進後的多次匹配操作 .87
第5 章 隊列和棧
5.1 隊列 90
5.1.1 什麼是隊列 .90
5.1.2 Python 內置的隊列操作方法 .91
5.1.3 實戰演練——基於內置模塊queue 的隊列 92
5.1.4 實戰演練——基於列表自定義實現的優先隊列 .96
5.1.5 實戰演練——基於堆實現的優先隊列 .98
5.1.6 實戰演練——雙端隊列 .100
5.1.7 實戰演練——銀行業務隊列簡單模擬 .101
5.2 棧 103
5.2.1 什麼是棧 .103
5.2.2 實戰演練——入棧和出棧 .103
5.2.3 實戰演練——順序棧 .105
5.2.4 實戰演練——鏈棧 .107
5.2.5 實戰演練——檢查小括號是否成對 .109
第6 章 樹
6.1 樹的基礎知識 111
6.1.1 什麼是樹 .111
6.1.2 樹的相關概念 .112
6.2 使用列表構建樹 113
6.2.1 實戰演練——實現一個簡單的樹 .113
6.2.2 實戰演練——使用列表創建二叉樹 .114
6.3 二叉樹 115
6.3.1 二叉樹的定義 .115
6.3.2 二叉樹的性質 .116
6.3.3 二叉樹存儲 .117
6.3.4 實戰演練——使用嵌套列表構建樹 .119
6.3.5 實戰演練——把二叉樹的任何子節點當成二叉樹進行處理 .121
6.3.6 實戰演練——實現二叉搜索樹查找操作 .122
6.3.7 實戰演練——實現二叉搜索樹的刪除操作 .128
6.3.8 實戰演練——遍歷二叉樹 .136
6.3.9 實戰演練——使用線索二叉樹 .140
6.4 堆排列和二叉堆 148
6.4.1 實戰演練——使用Python 內置的堆操作方法 148
6.4.2 實戰演練——實現二叉堆操作 .149
6.5 哈夫曼樹 151
6.5.1 哈夫曼樹基礎 .152
6.5.2 實戰演練——使用面向過程方式和面向物件方式實現哈夫曼樹 .154
6.5.3 實戰演練——實現哈夫曼樹的基本操作 .155
第7 章 圖
7.1 圖的起源 159
7.2 圖的相關概念 160
7.3 存儲結構 163
7.3.1 使用鄰接矩陣表示圖 .163
7.3.2 實戰演練——將鄰接矩陣輸出成圖 .165
7.3.3 實戰演練——使用鄰接表表示圖 .165
7.3.4 鄰接矩陣與鄰接表的對比 .168
7.4 圖的遍歷 169
7.4.1 深度優先搜索 .169
7.4.2 廣度優先搜索 .171
7.4.3 實戰演練——實現圖的深度優先和廣度優先 .172
7.4.4 深度優先算法和廣度優先算法的比較和選擇 .174
7.5 圖的連通性 175
7.5.1 無向圖連通分量 .175
7.5.2 實戰演練——通過二維數組建立無向圖 .176
7.5.3 實戰演練——根據鄰接矩陣繪制無向圖 .177
7.5.4 最小生成樹 .178
7.5.5 實戰演練——實現最小生成樹和拓撲序列 .179
7.5.6 關鍵路徑 .180
7.5.7 實戰演練——使用遞歸解決AOE 網絡最長路關鍵路徑的問題 .182
7.6 尋求最短路徑 184
7.6.1 求某一頂點到其他各頂點的最短路徑 .184
7.6.2 任意一對頂點間的最短路徑 .186
7.6.3 實戰演練——使用Dijkstra 算法計算指定一個點到其他
各頂點的路徑 .188
7.6.4 實戰演練——使用Floyd-Warshall 算法計算圖的最短路徑 189
7.6.5 實戰演練——使用Bellman-Ford 算法計算圖的最短路徑 .190
7.6.6 實戰演練——使用Dijkstra 算法解決加權最短路徑問題 191
7.6.7 幾種最短路徑算法的比較 .193
第8 章 數據結構的查找算法
8.1 數據結構的查找處理 195
8.1.1 查找的基本概念 .195
8.1.2 查找算法的分類 .196
8.2 順序查找 196
8.2.1 順序查找法基礎 .196
8.2.2 分析順序查找的性能 .197
8.2.3 使用Python 內置函數順序查找 197
8.2.4 實戰演練———遍歷有序列表 .198
8.2.5 實戰演練———遍歷無序列表 .198
8.2.6 實戰演練———查找兩個有序列表的中位數 .201
8.2.7 實戰演練———在列表中順序查找最大值和最小值 .202
8.3 折半查找算法 202
8.3.1 折半查找法基礎 .203
8.3.2 分析折半查找法的性能 .203
8.3.3 實戰演練——使用折半查找算法查找指定的數據 .203
8.3.4 實戰演練——使用遞歸折半查找和非遞歸折半查找 .204
8.3.5 實戰演練——比較順序查找算法和折半查找算法的效率 .206
8.4 插值查找算法 207
8.4.1 插值查找算法基礎 .207
8.4.2 分析插值查找的性能 .208
8.4.3 實戰演練——使用插值查找算法查找指定的數據 .208
8.5 分塊查找算法 209
8.5.1 分塊查找算法基礎 .209
8.5.2 分析分塊查找算法的性能 .210
8.5.3 實戰演練——使用分塊查找算法在列表中查找某元素 .210
8.5.4 實戰演練——升級策略後的分塊查找算法 .212
8.5.5 實戰演練——一道算法題 .213
8.6 二叉排序樹法 216
8.6.1 二叉排序樹法基礎 .216
8.6.2 分析二叉排序樹法的性能 .216
8.6.3 實戰演練——實現二叉樹的搜索、插入、刪除、先序遍歷
和後序遍歷操作 .217
8.7 平衡查找樹法 221
8.7.1 2-3 查找樹 .221
8.7.2 平衡查找樹之紅黑樹(Red-Black Tree) 225
8.7.3 平衡二叉樹 .227
8.8 哈希查找算法 233
8.8.1 哈希查找算法的基本思想 .233
8.8.2 分析哈希查找算法的性能 .234
8.8.3 實戰演練——使用哈希查找算法查找數據 .234
8.9 斐波那契查找算法 235
8.9.1 斐波那契查找算法基礎 .235
8.9.2 實戰演練——使用斐波那契查找算法查找數據 .236
第9 章 數據結構的排序算法
9.1 數據結構排序的基礎知識 238
9.1.1 排序算法的定義和評價標準 .238
9.1.2 排序算法的分類 .239
9.2 使用插入排序算法 239
9.2.1 插入排序算法基礎 .239
9.2.2 直接插入排序 .240
9.2.3 實戰演練——使用直接插入排序算法對列表中的元素進行排序 .241
9.2.4 折半插入排序 .242
9.2.5 實戰演練——使用折半插入排序法查找指定數字 .243
9.2.6 實戰演練——使用折半插入排序 .243
9.2.7 實戰演練——對鏈表進行插入排序 .244
9.3 使用希爾排序算法 245
9.3.1 希爾排序算法基礎 .245
9.3.2 分析希爾排序算法的性能 .246
9.3.3 實戰演練——使用希爾排序算法對數據進行排序處理 .246
9.3.4 實戰演練——排序一個大的隨機列表 .247
9.4 冒泡排序算法 249
9.4.1 冒泡排序算法基礎 .249
9.4.2 分析冒泡排序算法的性能 .250
9.4.3 實戰演練——實現從大到小的冒泡排序 .250
9.4.4 實戰演練——使用冒泡排序法實現升序排序 .251
9.5 使用快速排序算法 252
9.5.1 快速排序算法基礎 .252
9.5.2 分析快速排序算法的性能 .253
9.5.3 實戰演練——使用快速排序算法排列輸入的列表 .254
9.6 選擇排序 255
9.6.1 直接選擇排序 .255
9.6.2 實戰演練——使用直接選擇排序法排序列表list 中的元素 256
9.6.3 樹形選擇排序 .257
9.6.4 實戰演練——創建二叉樹並實現完整樹形排序 .257
9.6.5 堆排序 .259
9.6.6 實戰演練——對9 個待排序數字實現完整堆排序 .260
9.7 歸並排序 263
9.7.1 歸並排序算法原理與性能 .263
9.7.2 實戰演練——使用歸並排序算法由小到大排序一個列表 .265
9.8 基數排序 266
9.8.1 基數排序算法原理與性能 .266
9.8.2 實戰演練——使用基數排序算法排列一個列表 .267

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 312
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區