數(shù)據(jù)結(jié)構(gòu)與算法分析:Java語(yǔ)言描述(原書(shū)第3版)
定 價(jià):69 元
叢書(shū)名:計(jì)算機(jī)科學(xué)叢書(shū)
- 作者:[美]馬克·艾倫·維斯
- 出版時(shí)間:2016/3/1
- ISBN:9787111528395
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP311.12
- 頁(yè)碼:403
- 紙張:膠版紙
- 版次:1
- 開(kāi)本:16開(kāi)
本書(shū)是國(guó)外數(shù)據(jù)結(jié)構(gòu)與算法分析方面的經(jīng)典教材,使用卓越的Java編程語(yǔ)言作為實(shí)現(xiàn)工具討論了數(shù)據(jù)結(jié)構(gòu)(組織大量數(shù)據(jù)的方法)和算法分析(對(duì)算法運(yùn)行時(shí)間的估計(jì))。本書(shū)把算法分析與最有效率的Java程序的開(kāi)發(fā)有機(jī)地結(jié)合起來(lái),深入分析每種算法,內(nèi)容全面、縝密?chē)?yán)格,并細(xì)致講解精心構(gòu)造程序的方法。
馬克·艾倫·維斯(Mark Allen Weiss)佛羅里達(dá)國(guó)際大學(xué)計(jì)算與信息科學(xué)學(xué)院教授、副院長(zhǎng),本科教育主任和研究生教育主任。他于1987年獲得普林斯頓大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位,師從Bob Sedgewick。他曾經(jīng)擔(dān)任全美AP(Advanced Placement)考試計(jì)算機(jī)學(xué)科委員會(huì)的主席(2000-2004)。他的主要研究興趣是數(shù)據(jù)結(jié)構(gòu)、算法和教育學(xué)。
出版者的話前言第1章 引論11.1 本書(shū)討論的內(nèi)容11.2 數(shù)學(xué)知識(shí)復(fù)習(xí)21.2.1 指數(shù)21.2.2 對(duì)數(shù)21.2.3 級(jí)數(shù)21.2.4 模運(yùn)算41.2.5 證明的方法41.3 遞歸簡(jiǎn)論51.4 實(shí)現(xiàn)泛型構(gòu)件pre-Java 571.4.1 使用Object表示泛型81.4.2 基本類(lèi)型的包裝91.4.3 使用接口類(lèi)型表示泛型91.4.4 數(shù)組類(lèi)型的兼容性101.5 利用Java 5泛型特性實(shí)現(xiàn)泛型構(gòu)件111.5.1 簡(jiǎn)單的泛型類(lèi)和接口111.5.2 自動(dòng)裝箱/拆箱111.5.3 菱形運(yùn)算符121.5.4 帶有限制的通配符121.5.5 泛型static方法141.5.6 類(lèi)型限界141.5.7 類(lèi)型擦除151.5.8 對(duì)于泛型的限制151.6 函數(shù)對(duì)象16小結(jié)18練習(xí)18參考文獻(xiàn)19第2章 算法分析202.1 數(shù)學(xué)基礎(chǔ)202.2 模型222.3 要分析的問(wèn)題222.4 運(yùn)行時(shí)間計(jì)算242.4.1 一個(gè)簡(jiǎn)單的例子242.4.2 一般法則242.4.3 最大子序列和問(wèn)題的求解262.4.4 運(yùn)行時(shí)間中的對(duì)數(shù)312.4.5 分析結(jié)果的準(zhǔn)確性33小結(jié)33練習(xí)34參考文獻(xiàn)37第3章 表、棧和隊(duì)列393.1 抽象數(shù)據(jù)類(lèi)型393.2 表ADT393.2.1 表的簡(jiǎn)單數(shù)組實(shí)現(xiàn)403.2.2 簡(jiǎn)單鏈表403.3 Java Collections API中的表413.3.1 Collection接口413.3.2 Iterator接口423.3.3 List接口、ArrayList類(lèi)和LinkedList類(lèi)433.3.4 例子:remove方法對(duì)LinkedList類(lèi)的使用443.3.5 關(guān)于ListIterator接口463.4 ArrayList類(lèi)的實(shí)現(xiàn)463.4.1 基本類(lèi)463.4.2 迭代器、Java嵌套類(lèi)和內(nèi)部類(lèi)493.5 LinkedList類(lèi)的實(shí)現(xiàn)523.6 棧ADT583.6.1 棧模型583.6.2 棧的實(shí)現(xiàn)593.6.3 應(yīng)用593.7 隊(duì)列ADT653.7.1 隊(duì)列模型653.7.2 隊(duì)列的數(shù)組實(shí)現(xiàn)653.7.3 隊(duì)列的應(yīng)用66小結(jié)67練習(xí)67第4章 樹(shù)714.1 預(yù)備知識(shí)714.1.1 樹(shù)的實(shí)現(xiàn)724.1.2 樹(shù)的遍歷及應(yīng)用724.2 二叉樹(shù)754.2.1 實(shí)現(xiàn)764.2.2 例子:表達(dá)式樹(shù)764.3 查找樹(shù)ADT——二叉查找樹(shù)784.3.1 contains方法794.3.2 findMin方法和findMax方法804.3.3 insert方法804.3.4 remove方法824.3.5 平均情況分析834.4 AVL樹(shù)864.4.1 單旋轉(zhuǎn)874.4.2 雙旋轉(zhuǎn)894.5 伸展樹(shù)944.5.1 一個(gè)簡(jiǎn)單的想法(不能直接使用)954.5.2 展開(kāi)964.6 再探樹(shù)的遍歷1004.7 B樹(shù)1014.8 標(biāo)準(zhǔn)庫(kù)中的集合與映射1054.8.1 關(guān)于Set接口1054.8.2 關(guān)于Map接口1054.8.3 TreeSet類(lèi)和TreeMap類(lèi)的實(shí)現(xiàn)1064.8.4 使用多個(gè)映射的實(shí)例106小結(jié)111練習(xí)111參考文獻(xiàn)115第5章 散列1175.1 一般想法1175.2 散列函數(shù)1175.3 分離鏈接法1195.4 不用鏈表的散列表1235.4.1 線性探測(cè)法1235.4.2 平方探測(cè)法1245.4.3 雙散列1295.5 再散列1305.6 標(biāo)準(zhǔn)庫(kù)中的散列表1325.7 最壞情形下O(1)訪問(wèn)的散列表 1335.7.1 完美散列1335.7.2 布谷鳥(niǎo)散列1355.7.3 跳房子散列1435.8 通用散列法1465.9 可擴(kuò)散列148小結(jié)149練習(xí)150參考文獻(xiàn)153第6章 優(yōu)先隊(duì)列(堆)1566.1 模型1566.2 一些簡(jiǎn)單的實(shí)現(xiàn)1566.3 二叉堆1576.3.1 結(jié)構(gòu)性質(zhì)1576.3.2 堆序性質(zhì)1576.3.3 基本的堆操作1586.3.4 其他的堆操作1626.4 優(yōu)先隊(duì)列的應(yīng)用1646.4.1 選擇問(wèn)題1646.4.2 事件模擬1656.5 d-堆1666.6 左式堆1676.6.1 左式堆性質(zhì)1676.6.2 左式堆操作1686.7 斜堆1726.8 二項(xiàng)隊(duì)列1736.8.1 二項(xiàng)隊(duì)列結(jié)構(gòu)1746.8.2 二項(xiàng)隊(duì)列操作1746.8.3 二項(xiàng)隊(duì)列的實(shí)現(xiàn)1766.9 標(biāo)準(zhǔn)庫(kù)中的優(yōu)先隊(duì)列180小結(jié)180練習(xí)181參考文獻(xiàn)184第7章 排序1867.1 預(yù)備知識(shí)1867.2 插入排序1867.2.1 算法1867.2.2 插入排序的分析1877.3 一些簡(jiǎn)單排序算法的下界1877.4 希爾排序1887.5 堆排序1917.6 歸并排序1937.7 快速排序1987.7.1 選取樞紐元1997.7.2 分割策略2007.7.3 小數(shù)組2027.7.4 實(shí)際的快速排序例程2027.7.5 快速排序的分析2037.7.6 選擇問(wèn)題的線性期望時(shí)間算法2067.8 排序算法的一般下界2077.9 選擇問(wèn)題的決策樹(shù)下界2097.10 對(duì)手下界2107.11 線性時(shí)間的排序:桶排序和基數(shù)排序2127.12 外部排序2167.12.1 為什么需要一些新的算法2177.12.2 外部排序模型2177.12.3 簡(jiǎn)單算法2177.12.4 多路合并2187.12.5 多相合并2197.12.6 替換選擇219小結(jié)220練習(xí)221參考文獻(xiàn)225第8章 不相交集類(lèi)2278.1 等價(jià)關(guān)系2278.2 動(dòng)態(tài)等價(jià)性問(wèn)題2278.3 基本數(shù)據(jù)結(jié)構(gòu)2298.4 靈巧求并算法2318.5 路徑壓縮2338.6 路徑壓縮和按秩求并的最壞情形2348.6.1 緩慢增長(zhǎng)的函數(shù)2358.6.2 利用遞歸分解的分析2358.6.3 O(M log*N)界2408.6.4 O(Mα(M,N))界2408.7 一個(gè)應(yīng)用241小結(jié)243練習(xí)243參考文獻(xiàn)244第9章 圖論算法2469.1 若干定義2469.2 拓?fù)渑判?489.3 最短路徑算法2509.3.1 無(wú)權(quán)最短路徑2519.3.2 Dijkstra算法2549.3.3 具有負(fù)邊值的圖2589.3.4 無(wú)圈圖2599.3.5 所有點(diǎn)對(duì)最短路徑2619.3.6 最短路徑的例子2619.4 網(wǎng)絡(luò)流問(wèn)題2629.5 最小生成樹(shù)2679.5.1 Prim算法2679.5.2 Kruskal算法2699.6 深度優(yōu)先搜索的應(yīng)用2709.6.1 無(wú)向圖2709.6.2 雙連通性2719.6.3 歐拉回路2739.6.4 有向圖2759.6.5 查找強(qiáng)分支2769.7 NP-完全性介紹2779.7.1 難與易2789.7.2 NP類(lèi)2789.7.3 NP-完全問(wèn)題279小結(jié)280練習(xí)280參考文獻(xiàn)284第10章 算法設(shè)計(jì)技巧28810.1 貪婪算法28810.1.1 一個(gè)簡(jiǎn)單的調(diào)度問(wèn)題28810.1.2 哈夫曼編碼29010.1.3 近似裝箱問(wèn)題29310.2 分治算法29810.2.1 分治算法的運(yùn)行時(shí)間29810.2.2 最近點(diǎn)問(wèn)題30010.2.3 選擇問(wèn)題30210.2.4 一些算術(shù)問(wèn)題的理論改進(jìn)30410.3 動(dòng)態(tài)規(guī)劃30710.3.1 用一個(gè)表代替遞歸30710.3.2 矩陣乘法的順序安排30910.3.3 最優(yōu)二叉查找樹(shù)31110.3.4 所有點(diǎn)對(duì)最短路徑31210.4 隨機(jī)化算法31410.4.1 隨機(jī)數(shù)發(fā)生器31510.4.2 跳躍表31910.4.3 素性測(cè)試32010.5 回溯算法32210.5.1 收費(fèi)公路重建問(wèn)題32310.5.2 博弈326小結(jié)331練習(xí)331參考文獻(xiàn)336第11章 攤還分析34011.1 一個(gè)無(wú)關(guān)的智力問(wèn)題34011.2 二項(xiàng)隊(duì)列34011.3 斜堆34411.4 斐波那契堆34511.4.1 切除左式堆中的節(jié)點(diǎn)34611.4.2 二項(xiàng)隊(duì)列的懶惰合并34711.4.3 斐波那契堆操作34911.4.4 時(shí)間界的證明35011.5 伸展樹(shù)351小結(jié)354練習(xí)354參考文獻(xiàn)355第12章 高級(jí)數(shù)據(jù)結(jié)構(gòu)及其實(shí)現(xiàn)35612.1 自頂向下伸展樹(shù)35612.2 紅黑樹(shù)36212.2.1 自底向上的插入36212.2.2 自頂向下紅黑樹(shù)36312.2.3 自頂向下的刪除36712.3 treap樹(shù)36812.4 后綴數(shù)組與后綴樹(shù)37012.4.1 后綴數(shù)組37112.4.2 后綴樹(shù)37312.4.3 線性時(shí)間的后綴數(shù)組和后綴樹(shù)的構(gòu)建37512.5 k-d樹(shù)38512.6 配對(duì)堆387小結(jié)392練習(xí)393參考文獻(xiàn)396索引399