JAVA語言程序設計與數據結構(進階篇)(原書第11版)
作 者: [美]梁勇(Y.DanielLiang) 著 戴開宇 譯 譯
定 價: 99
出?版?社: 機械工業出版社
出版日期: 2017年02月01日
頁 數: 370
裝 幀: 平裝
ISBN: 9787111610038
●出版者的話中文版序譯者序前言9章 泛型 119.1 引言 119.2 動機和優點 119.3 定義泛型類和接口 419.4 泛型方法 519.5 示例學習:對一個對像數組進行排序 719.6 原生類型和向後兼容 819.7 通配泛型 1019.8 泛型的擦除和限制 1219.9 示例學習:泛型矩陣類 15關鍵術語 19本章小結 19測試題 20編程練習題 20第20章 線性表、棧、隊列和優先隊列 2220.1 引言 2220.2 集合 2320.3 迭代器 2620.4 使用forEach方法 2720.5 線性表 2820.5.1 List接口中的通用方法 2820.5.2 數組線性表類ArrayList和鏈表類LinkedList 2920.6 Comparator接口 3220.7 線性表和集合的靜態方法 3620.8 示例學習:彈球 3920.9 向量類和棧類 4220.10 隊列和優先隊列 4420.10.1 Queue接口 4420.10.2 雙端隊列Deque和鏈表LinkedList 4520.11 示例學習:表達式求值 47關鍵術語 51本章小結 51測試題 51編程練習題 51第21章 規則集和映射 5721.1 引言 5721.2 規則集 5721.2.1 HashSet 5821.2.2 LinkedHashSet 6121.2.3 TreeSet 6221.3 比較規則集和線性表的性能 6521.4 示例學習:關鍵字計數 6721.5 映射 6921.6 示例學習:單詞的出現次數 7321.7 &nbs素與不可變的集合和映射 75關鍵術語 76本章小結 76測試題 77編程練習題 77第22章 開發高效算法 7922.1 引言 7922.2 使用大?O?標記來衡量算法效率 7922.3 示例:確定大O 8122.4 分析算法的時間復雜度 8522.4.1 分析二分查找算法 8522.4.2 分析選擇排序算法 8522.4.3 分析漢諾塔問題 8522.4.4 常用的遞推關繫 8622.4.5 比較常用的增長函數 8622.5 使用動態編程尋找斐波那契數 8722.6 使用歐幾裡得算法求優選公約數 8922.7 尋找素數的高效算法 9322.8 使用分而治之法尋找最近點對 9922.9 使用回溯法解決八皇後問題 10122.10 計算幾何:尋找凸包 10322.10.1 卷包裹算法 10422.10.2 格雷阨姆算法 105關鍵術語 106本章小結 106測試題 107編程練習題 107第23章 排序 11423.1 引言 11423.2 插入排序 11523.3 冒泡排序 11723.4 歸並排序 11923.5 快速排序 12223.6 堆排序 12623.6.1 堆的存儲 12723.6.2 添加一個新的結點 12723.6.3 刪除根結點 12823.6.4 Heap類 12923.6.5 使用Heap類進行排序 13123.6.6 堆排序的時間復雜度 13223.7 桶排序和基數排序 13323.8 外部排序 13523.8.1 實現階段Ⅰ 13623.8.2 實現階段Ⅱ 13723.8.3 結合兩個階段 13923.8.4 外部排序復雜度 141關鍵術語 142本章小結 142測試題 142編程練習題 142第24章 實現線性表、棧、隊列和優先隊列 14624.1 引言 14624.2 線性表的通用操作 14624.3 數組線性表 14924.4 鏈表 15624.4.1 結點 15624.4.2 MyLinkedList類 15824.4.3 實現MyLinkedList 15924.4.4 MyArrayList和MyLinkedList 16724.4.5 鏈表的變體 16724.5 棧和隊列 16924.6 優先隊列 172本章小結 173測試題 174編程練習題 174第25章 二叉搜索樹 17625.1 引言 17625.2 二叉搜索樹 17625.2.1 表示二叉搜索樹 17725.2.2 查素 17825.2.3 在BST中插素 17825.2.4 樹的遍歷 17925.2.5 BST類 18025.3 刪除BST中素 18925.4 樹的可視化和MVC 19425.5 迭代器 19725.6 示例學習:數據壓縮 199關鍵術語 204本章小結 204測試題 204編程練習題 204第26章 AVL樹 20826.1 引言 20826.2 重新平衡樹 20926.3 為AVL樹設計類 21126.4 重寫insert方法 21226.5 實現旋轉 21326.6 實現delete方法 21326.7 AVLTree類 21426.8 測試 AVLTree類 21926.9 AVL樹的時間復雜度分析 222關鍵術語 222本章小結 223測試題 223編程練習題 223第27章 散列 22527.1 引言 22527.2 什麼是散列 22527.3 散列函數和散列碼 22627.3.1 基本數據類型的散列碼 22627.3.2 字符串的散列碼 22727.3.3 壓縮散列碼 22727.4 使用開放地址法處理衝突 22827.4.1 線性探測法 22827.4.2 二次探測法 23027.4.3 雙重散列法 23027.5 使用分離鏈接法處理衝突 23227.6 裝填因子和再散列 23227.7 使用散列實現映射 23327.8 使用散列實現規則集 242關鍵術語 248本章小結 249測試題 249編程練習題 249第28章 圖及其應用 25128.1 引言 25128.2 基本的圖術語 25228.3 表示圖 25428.3.1 表示頂點 25428.3.2 表示邊:邊數組 25528.3.3 表示邊:Edge對像 25628.3.4 表示邊:鄰接矩陣 25628.3.5 表示邊:鄰接線性表 25728.4 圖的建模 25928.5 圖的可視化 26828.6 圖的遍歷 27128.7 深度優先搜索 27228.7.1 DFS的算法 27228.7.2 DFS的實現 27328.7.3 DFS的應用 27428.8 示例學習:連通圓問題 27528.9 廣度優先搜索 27828.9.1 BFS的算法 27828.9.2 BFS的實現 27828.9.3 BFS的應用 28028.10 示例學習:9枚硬幣反面問題 281關鍵術語 286本章小結 286測試題 286編程練習題 286第29章 加權圖及其應用 29129.1 引言 29129.2 加權圖的表示 29229.2.1 加權邊的表示:邊數組 29229.2.2 加權鄰接矩陣 29329.2.3 鄰接線性表 29329.3 WeightedGraph類 29429.4 最小生成樹 30129.4.1 最小生成樹算法 30229.4.2 完善Prim的MST算法 30329.4.3 MST算法的實現 30429.5 尋找最短路徑 30729.6 示例學習:加權的9枚硬幣反面問題 315關鍵術語 318本章小結 318測試題 319編程練習題 319第30章 集合流的聚合操作 32530.1 引言 32530.2 流管道 32630.2.1 Stream.of、limit、forEach方法 32830.2.2 sorted方法 32930.2.3 filter方法 32930.2.4 max和min方法 32930.2.5 anyMatch、allMatch和noneMatch方法 32930.2.6 map、distinct和count方法 32930.2.7 findFirst、findAny和toArray方法 33030.3 IntStream、LongStream和DoubleStream 33130.4 並行流 33330.5 使用reduce方法進行流的歸約 33630.6 使用collect方法進行流的歸約 33830.7 使用groupingBy收集素分組 34130.8 示例學習 34430.8.1 示例學習:數字分析 34430.8.2 示例學習:計算字母的出現次數 34530.8.3 示例學習:計算字符串中每個字母的出現次數 34630.8.4 示例學習:處理二維數組中素 34730.8.5 示例學習:得到目錄大小 34830.8.6 示例學習:關鍵字計數 34930.8.7 示例學習:單詞出現次數 350本章小結 351測試題 351編程練習題 351附錄A Java關鍵字 353附錄B ASCII字符集 354附錄C 操作符優先級表 355附錄D Java修飾符 356附錄E 特殊浮點值 357附錄F 數繫 358附錄G 位操作符 362附錄H 正則表達式 363附錄I 枚舉類型 367
內容簡介
本書是Java語言的經典教材,中文版分為基礎篇和進階篇,主要介紹程序設計基礎、面向對像程序設計、GUI程序設計、數據結構和算法、不錯Java程序設計等內容。本書以示例介紹解決問題的技巧,提供大量的程序清單,每章配有大量復習題和編程練習題,幫助讀者掌握編程技術,並應用所學技術解決實際工程問題。進階篇突出數據結構和算法,主要涵蓋以下內容:泛型,規則集和映射,開發高效算法,實現線性表、棧、隊列和優先隊列,二叉搜索樹,AVL樹,散列,圖及其應用,加權圖及其應用,集合流的聚合操作等。本書可作為高等院校計算機專業相關課程的教材,也可供Java語言及編程愛好者參考。
[美]梁勇(Y.DanielLiang) 著 戴開宇 譯 譯
梁勇(Y. Daniel Liang) 現為阿姆斯特朗亞特蘭大州立大學計算機科學繫教授。之前曾是普度大學計算機科學繫副教授,並曾兩次獲得普度大學傑出研究獎。他所編寫的Java教程在美國大學Java課程中采用率極高,同時他還兼任Prentice Hall Java繫列叢書的編輯。他是“Java Champion”榮譽得主,並在世界各地給在校學生和程序員做Java語言及技術方面的講座。
許多讀者就本書之前的版本給出了很多反饋。這些評論和建議極大地改進了本書。這一版在表述、組織、示例、練習題以及附錄方面都有大幅提高。本書采用基礎優先的方法,在設計用戶自定義類之前,首先介紹基本的程序設計概念和技術。選擇語句、循環、方法和數組這樣的基本概念和技術是程序設計的基礎,它們為學生進一步學習面向對像程序設計和不錯Java程序設計做好準備。本書以問題驅動的方式來教授程序設計,將重點放在問題的解決而不是語法上。我們通過使用在各種應用情景中引發思考的問題,使得程序設計的介紹變得更加有趣。前面章節的主線放在問題的解決上,引入合適的語法和庫以支持編寫解決問題的程序。為了支持以問題驅動的方式來教授程序設計,本書提供了大量不同難度的問題來激發學生的積極性。為了吸引各個專業的學生來學習,這些問題涉及很多應用領域,包括數學、科學、商業、金融、遊戲、動畫以及多媒體等。本書將程序設計、數據結構和算法無縫整合......
"