-
内容大纲
本书结合Java语言的数据结构(集合)介绍穷举法、归纳法、迭代法和递归法等基本算法设计方法,重点讨论分治法、回溯法、分支限界法、贪心法和动态规划五大算法设计策略的原理和算法设计框架,通过大量典型示例和LeetCode实战题解析了多途径构建模型、求解和算法实现的过程。
本书既注重原理又注重实践,配有大量图表、练习题、上机实验题和在线编程题,内容丰富、概念讲解清楚、表达严谨、逻辑性强、语言精练、可读性好。
本书既便于教师课堂讲授,又便于自学者阅读,适合作为高等院校“算法设计与分析”课程的教材,也可供ACM和各类程序设计竞赛者参考。 -
作者介绍
李春葆,武汉大学计算机学院教授。主要研究方向为数据挖掘和算法设计,先后主持和参加多个大型研究项目。主要为本科生讲授数据结构(15年以上)和软件工程等课程,为研究生讲授软件开发新技术、数据仓库与数据挖掘等课程,并出版十多部精品著作。 -
目录
第1章 算法入门——概论
1.1 算法概述
1.1.1 什么是算法
1.1.2 算法描述
1.1.3 算法设计的基本步骤
1.2 算法分析
1.2.1 算法的时间复杂度分析
1.2.2 算法的空间复杂度分析
1.3 练习题
1.3.1 单项选择题
1.3.2 问答题
1.3.3 算法设计题
第2章 工之利器——常用数据结构及其应用
2.1 线性表——数组
2.1.1 线性表的定义
2.1.2 Java数组
2.1.3 实战——移除元素(LeetCode27★)
2.1.4 Arrays类及其应用
2.1.5 ArrayList类及其应用
2.2 线性表——链表
2.2.1 单链表
2.2.2 实战——反转链表(LealCodle206★)
2.2.3 LinkedList类
2.3 字符串
2.3.1 字符串的定义
2.3.2 String类
2.3.3 实战——最大重复子字符串(LeetCodel668★)
2.4 栈
2.4.1 栈的定义
2.4.2 Stack栈类
2.4.3 实战——使括号有效的最少添加(LeetCode921★)
2.5 队列
2.5.1 队列的定义
2.5.2 Queue队列接口
2.5.3 实战——无法吃午餐的学生数量(LeetCodeI700★)
2.6 双端队列
2.6.1 双端队列的定义
2.6.2 Deque双端队列接口
2.6.3 实战——滑动窗口中的最大值(LeetCode239★★★)
2.7 优先队列
2.7.1 优先队列的定义
2.7.2 PriorityQueue优先队列类
2.7.3 实战——滑动窗口中的最大值(LeetCode239★★★)
2.8 树和二叉树
2.8.1 树
2.8.2 二叉树
2.8.3 实战——二叉树的完全性检验(LeetCode958★★)
2.9 图
2.9.1 图基础
2.9.2 实战——课程表(LeetCode207★★)
2.10 并查集
2.10.1 并查集基础
2.10.2 实战——省份数量(LeetCode547★★)
2.11 二叉排序树和平衡二叉树
……
第3章 必备技能——基本算法设计方法
第4章 分而治之——分治法
第5章 走不下去就回退——回溯法
第6章 朝最优解方向前进——分支限界法
第7章 每一步都局部最优——贪心法
第8章 保存子问题的解——动态规划
第9章 最难问题——NP完全问题
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...