新書推薦:
《
首辅养成手册(全三册)(张晚意、任敏主演古装剧《锦绣安宁》原著小说)
》
售價:HK$
121.0
《
清洁
》
售價:HK$
65.0
《
组队:超级个体时代的协作方式
》
售價:HK$
77.3
《
第十三位陪审员
》
售價:HK$
53.8
《
微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:HK$
155.7
《
Python贝叶斯深度学习
》
售價:HK$
89.4
《
启微·狂骉年代:西洋赛马在中国
》
售價:HK$
78.4
《
有趣的中国古建筑
》
售價:HK$
67.0
|
內容簡介: |
本书以Java为描述语言,介绍了数据结构与算法的基本知识。书中结合企业界的工程实践提炼教学内容,特别对数据结构中易混淆的问题进行了梳理,对每一个问题提出不同的解决方案。本书是一本优秀的数据结构方面的教材。
|
目錄:
|
目录译者序前言第1章绪论111变量112数据类型113数据结构214抽象数据类型215什么是算法316为什么需要算法分析317算法分析的目的318什么是运行时间分析419如何比较算法4110什么是增长率4111常用的增长率4112分析的类型5113渐近表示6114大O表示法6115Ω表示法7116Θ表示法8117重要说明9118为什么称为渐近分析9119渐近分析指南9120渐近表示法的性质11121常用的对数和累加公式11122分治法主定理12123分治法主定理的相关问题12124问题规模减小和递归求解主定理13125问题规模减小和递归求解主定理的变型13126猜测和确认的方法14127平摊分析15128算法分析的相关问题15第2章递归和回溯2821引言2822什么是递归2823为什么要用递归2824递归函数的格式2825递归和内存(可视化)2926递归与迭代3027递归说明3028递归算法的经典用例3029递归的相关问题31210什么是回溯32211回溯算法的经典用例32212回溯的相关问题32第3章链表3431什么是链表3432链表抽象数据类型3433为什么要用链表3534数组概述3535链表、数组和动态数组的比较3636单向链表3637双向链表4138循环链表4639一种存储高效的双向链表51310松散链表52311链表的相关问题55第4章栈7241什么是栈7242如何使用栈7243栈抽象数据类型7344异常7345应用7346实现7347栈的各种实现方法比较7748栈的相关问题78第5章队列9851什么是队列9852如何使用队列9853队列抽象数据类型9954异常9955应用9956实现9957队列的相关问题104第6章树11061什么是树11062术语11063二叉树11164二叉树的遍历11465通用树(N叉树)13566线索(无栈或无队列结构)二叉树遍历14167表达式树14768异或树14969二叉搜索树150610平衡二叉搜索树164611AVL树165612树的其他形式1786121红黑树1786122伸展树1796123增强树1796124替罪羊树1796125区间树180第7章优先队列和堆18171什么是优先队列18172优先队列ADT18173优先队列的应用18274优先队列的实现18275堆和二叉堆18376二叉堆18477优先队列(堆)的相关问题190第8章并查集ADT20181引言20182等价关系和等价类20183并查集ADT20284应用20285并查集ADT实现中的权衡20286快速UNION实现(慢FIND)20387快速UNION实现(快速FIND)20688路径压缩20889小结209810并查集的相关问题209第9章图算法21191引言21192术语21193图的应用21494图的表示21495图的遍历21796拓扑排序22597最短路径算法22698最小生成树23199图算法的相关问题235第10章排序256101什么是排序256102为什么需要排序256103排序的分类256104其他分类方法257105冒泡排序257106选择排序258107插入排序259108希尔排序261109归并排序2621010堆排序2641011快速排序2641012树排序2661013排序算法比较2671014线性排序算法2671015计数排序2671016桶排序2681017基数排序2681018拓扑排序2691019外部排序2691020排序的相关问题270第11章查找279111什么是查找279112为什么需要查找279113查找的类型279114符号表和散列281115字符串查找算法281116查找的相关问题281第12章选择算法中位数304121什么是选择算法304122基于排序的选择算法304123基于划分的选择算法304124线性选择算法——中位数的中位数算法305125按照排序顺序查找K个最小元素305126选择算法的相关问题305第13章符号表314131引言314132什么是符号表314133符号表的实现315134符号表实现方法的比较315第14章散列317141什么是散列317142为什么用散列317143散列表ADT317144散列的例子317145散列的组成部分319146散列表319147散列函数319148负载因子320149冲突3201410冲突解决技术3201411分离链接法3201412开放定址法3211413冲突解决技术的比较3221414散列如何达到O1的时间复杂度3221415散列技术3231416不适用散列表的问题3231417布鲁姆过滤器3231418散列的相关问题325第15章字符串算法335151引言335152字符串匹配算法335153蛮力法336154RobinKarp字符串匹配算法336155基于有限自动机的字符串匹配算法337156KMP算法338157BoyceMoore算法342158存储字符串的数据结构342159字符串的散列表实现3421510字符串的二叉搜索树实现3431511键树3431512三叉搜索树3451513二叉搜索树、键树和三叉搜索树的比较3491514后缀树3491515字符串的相关问题353第16章算法设计技术361161引言361162分类361163按实现方法分类361164按设计方法分类362165其他分类法363第17章贪婪算法364171引言364172贪婪策略的定义364173贪婪算法的要素364174贪婪算法的适用范围365175贪婪算法的优缺点365176贪婪算法的应用365177贪婪思想365178贪婪算法的相关问题368第18章分治算法375181引言375182分治策略的定义375183分治法的适用范围375184分治法的图形化描述375185分治思想376186主定理377187分治法的应用377188分治法的相关问题378第19章动态规划算法390191引言390192动态规划策略的定义390193动态规划策略的性质390194动态规划的适用范围390195动态规划的实现方法391196动态规划算法的例子391197动态规划思想391198动态规划的相关问题396第20章复杂度类型425201引言425202多项式指数时间425203决策问题的定义426204决策过程426205复杂度类型的定义426206复杂度类型426207归约428208复杂度类型的相关问题430第21章杂谈433211引言433212位运算的使用4332121按位与操作4332122按位或操作4342123按位异或操作4342124按位左移操作4342125按位右移操作4342126按位补操作4342127检测第K位是否置位4342128第K位置位4352129第K位清零43521210切换第K位43521211切换值为1的最右位43521212隔离值为1的最右位43521213隔离值为0的最右位43521214检查某个数是否是2的幂43621215将某个数乘以2的幂43621216将某个数除以2的幂43621217找到给定操作数的模43621218反转二进制数43621219位值1的计数43621220创建末尾位为0的掩码43721221交换奇偶位43821222不使用除法来计算平均数438213其他编程问题438参考文献442
|
|