原书第3版 数据结构与算法分析 java语言描述


原书第3版 数据结构与算法分析 java语言描述

文章插图
数据结构与算法分析 java语言描述(原书第3版)【原书第3版 数据结构与算法分析 java语言描述】《数据结构与算法分析 java语言描述(原书第3版)》是2016年机械工业出版社出版的图书,作者是[美]马克·艾伦·维斯。
基本介绍书名:数据结构与算法分析 java语言描述(原书第3版)
作者:[美]马克·艾伦·维斯
原版名称:Data Structures and Algorithm Analysis in Java,Third Edition
译者:陈越
ISBN:9787111528395
页数:403
定价:69
出版社:机械工业出版社
出版时间:2016-10-31
开本:16
内容简介本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java程式语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计) 。本书把算法分析与最有效率的Java程式的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细緻讲解精心构造程式的方法 。图书目录出版者的话前言第1章 引论11.1本书讨论的内容11.2数学知识複习21.2.1指数21.2.2对数21.2.3级数21.2.4模运算41.2.5证明的方法41.3递归简论51.4实现泛型构件pre-Java 571.4.1使用Object表示泛型81.4.2基本类型的包装91.4.3使用接口类型表示泛型91.4.4数组类型的兼容性101.5利用Java 5泛型特性实现泛型构件111.5.1简单的泛型类和接口111.5.2自动装箱/拆箱111.5.3菱形运算符121.5.4带有限制的通配符121.5.5泛型static方法141.5.6类型限界141.5.7类型擦除151.5.8对于泛型的限制151.6函式对象16小结18练习18参考文献19第2章 算法分析202.1数学基础202.2模型222.3要分析的问题222.4运行时间计算242.4.1一个简单的例子242.4.2一般法则242.4.3最大子序列和问题的求解262.4.4运行时间中的对数312.4.5分析结果的準确性33小结33练习34参考文献37第3章 表、栈和伫列393.1抽象数据类型393.2表ADT393.2.1表的简单数组实现403.2.2简单鍊表403.3Java Collections API中的表413.3.1Collection接口413.3.2Iterator接口423.3.3List接口、ArrayList类和LinkedList类433.3.4例子:remove方法对LinkedList类的使用443.3.5关于ListIterator接口463.4ArrayList类的实现463.4.1基本类463.4.2叠代器、Java嵌套类和内部类493.5LinkedList类的实现523.6栈ADT583.6.1栈模型583.6.2栈的实现593.6.3套用593.7伫列ADT653.7.1伫列模型653.7.2伫列的数组实现653.7.3伫列的套用66小结67练习67第4章 树714.1预备知识714.1.1树的实现724.1.2树的遍历及套用724.2二叉树754.2.1实现764.2.2例子:表达式树764.3查找树ADT——二叉查找树784.3.1contains方法794.3.2findMin方法和findMax方法804.3.3insert方法804.3.4remove方法824.3.5平均情况分析834.4AVL树864.4.1单旋转874.4.2双旋转894.5伸展树944.5.1一个简单的想法(不能直接使用)954.5.2展开964.6再探树的遍历1004.7B树1014.8标準库中的集合与映射1054.8.1关于Set接口1054.8.2关于Map接口1054.8.3TreeSet类和TreeMap类的实现1064.8.4使用多个映射的实例106小结111练习111参考文献115第5章 散列1175.1一般想法1175.2散列函式1175.3分离连结法1195.4不用鍊表的散列表1235.4.1线性探测法1235.4.2平方探测法1245.4.3双散列1295.5再散列1305.6标準库中的散列表1325.7最坏情形下O(1)访问的散列表…1335.7.1完美散列1335.7.2布穀鸟散列1355.7.3跳房子散列1435.8通用散列法1465.9可扩散列148小结149练习150参考文献153第6章 优先伫列(堆)1566.1模型1566.2一些简单的实现1566.3二叉堆1576.3.1结构性质1576.3.2堆序性质1576.3.3基本的堆操作1586.3.4其他的堆操作1626.4优先伫列的套用1646.4.1选择问题1646.4.2事件模拟1656.5d-堆1666.6左式堆1676.6.1左式堆性质1676.6.2左式堆操作1686.7斜堆1726.8二项伫列1736.8.1二项伫列结构174 6.8.2二项伫列操作1746.8.3二项伫列的实现1766.9标準库中的优先伫列180小结180练习181参考文献184第7章 排序1867.1预备知识1867.2插入排序1867.2.1算法1867.2.2插入排序的分析1877.3一些简单排序算法的下界1877.4希尔排序1887.5堆排序1917.6归併排序1937.7快速排序1987.7.1选取枢纽元1997.7.2分割策略2007.7.3小数组2027.7.4实际的快速排序例程2027.7.5快速排序的分析2037.7.6选择问题的线性期望时间算法2067.8排序算法的一般下界2077.9选择问题的决策树下界2097.10对手下界2107.11线性时间的排序:桶排序和基数排序2127.12外部排序2167.12.1为什幺需要一些新的算法2177.12.2外部排序模型2177.12.3简单算法2177.12.4多路合併2187.12.5多相合併2197.12.6替换选择219小结220练习221参考文献225第8章 不相交集类2278.1等价关係2278.2动态等价性问题2278.3基本数据结构2298.4灵巧求并算法2318.5路径压缩2338.6路径压缩和按秩求并的最坏情形2348.6.1缓慢增长的函式2358.6.2利用递归分解的分析2358.6.3O(M log*N)界2408.6.4O(Mα(M,N))界2408.7一个套用241小结243练习243参考文献244第9章 图论算法2469.1若干定义2469.2拓扑排序2489.3最短路径算法2509.3.1无权最短路径2519.3.2Dijkstra算法2549.3.3具有负边值的图2589.3.4无圈图2599.3.5所有点对最短路径2619.3.6最短路径的例子2619.4网路流问题2629.5最小生成树2679.5.1Prim算法2679.5.2Kruskal算法2699.6深度优先搜寻的套用2709.6.1无向图2709.6.2双连通性2719.6.3欧拉迴路2739.6.4有向图2759.6.5查找强分支2769.7NP-完全性介绍2779.7.1难与易2789.7.2NP类278 9.7.3NP-完全问题279小结280练习280参考文献284第10章 算法设计技巧28810.1贪婪算法28810.1.1一个简单的调度问题28810.1.2哈夫曼编码29010.1.3近似装箱问题29310.2分治算法29810.2.1分治算法的运行时间29810.2.2最近点问题30010.2.3选择问题30210.2.4一些算术问题的理论改进30410.3动态规划30710.3.1用一个表代替递归30710.3.2矩阵乘法的顺序安排30910.3.3最优二叉查找树31110.3.4所有点对最短路径31210.4随机化算法31410.4.1随机数发生器31510.4.2跳跃表31910.4.3素性测试32010.5回溯算法32210.5.1收费公路重建问题32310.5.2博弈326小结331练习331参考文献336第11章 摊还分析34011.1一个无关的智力问题34011.2二项伫列34011.3斜堆34411.4斐波那契堆34511.4.1切除左式堆中的节点34611.4.2二项伫列的懒惰合併34711.4.3斐波那契堆操作34911.4.4时间界的证明35011.5伸展树351小结354练习354参考文献355第12章 高级数据结构及其实现35612.1自顶向下伸展树35612.2红黑树36212.2.1自底向上的插入36212.2.2自顶向下红黑树36312.2.3自顶向下的删除36712.3treap树36812.4后缀数组与后缀树37012.4.1后缀数组37112.4.2后缀树37312.4.3线性时间的后缀数组和后缀树的构建37512.5k-d树38512.6配对堆387小结392练习393参考文献396索引399