《图解Java数据结构与算法:微课视频版》简介

本书系统、全面地介绍数据结构的基础理论与算法设计,精选数据结构考研习题和各类典型例题进行讲解,案例和课后习题丰富,突出对数据结构算法实践能力的培养。本书算法均采用Java语言实现,示例代码可直接上机运行。

本书配套资源丰富,包括示例源码、PPT课件、教学视频、教学大纲、习题与答案等。

本书共分11章,内容包括数据结构与算法概述,线性表,栈和队列,串、数组和广义表,树,图,查找算法,排序算法,分治算法,贪心算法,回溯算法。

本书适合Java数据结构初学者,可作为高等院校计算机、软件工程等相关专业数据结构课程的教材,也可作为计算机软件开发、准备计算机专业研究生考试、参加各类算法竞赛、准备计算机软件资格考试的人员的参考用书。

本书目录

第1章  数据结构与算法概述 1

1.1  为什么要学习数据结构 1

1.2  基本概念和术语 2

1.3  数据的逻辑结构与存储结构 4

1.3.1  逻辑结构 4

1.3.2  存储结构 5

1.4  抽象数据类型及其描述 6

1.4.1  什么是抽象数据类型 6

1.4.2  抽象数据类型的描述 6

1.5  算法 8

1.5.1  数据结构与算法的关系 9

1.5.2  什么是算法 9

1.5.3  算法的5个特性 9

1.5.4  算法的描述 10

1.6  算法分析 11

1.6.1  算法设计的4个目标 11

1.6.2  算法效率评价 12

1.6.3  算法的时间复杂度 13

1.6.4  算法的空间复杂度 16

1.7  学好数据结构的秘诀 17

1.8  小结 19

第2章  线性表 20

2.1  线性表的定义及抽象数据类型 20

2.1.1  线性表的定义 20

2.1.2  线性表的抽象数据类型 21

2.2  线性表的顺序表示与实现 22

2.2.1  线性表的顺序存储 22

2.2.2  顺序表的基本运算 23

2.2.3  基本操作性能分析 26

2.2.4  顺序表应用举例 27

2.3  线性表的链式表示与实现 30

2.3.1  单链表的存储结构 30

2.3.2  单链表上的基本运算 32

2.3.3  单链表应用举例 36

2.3.4  循环单链表 38

2.3.5  双向链表 41

2.4  一元多项式的表示与相乘 44

2.4.1  一元多项式的表示 44

2.4.2  一元多项式相乘 45

2.5  小结 49

第3章  栈与队列 50

3.1  栈的表示与实现 50

3.1.1  栈的定义 50

3.1.2  栈的抽象数据类型 51

3.1.3  顺序栈 52

3.1.4  链栈 56

3.2  栈的应用 59

3.2.1  数制转换 59

3.2.2  行编辑程序 60

3.2.3  算术表达式求值 61

3.3  栈与递归 67

3.3.1  递归 68

3.3.2  消除递归 71

3.4  队列的表示与实现 73

3.4.1  队列的定义 73

3.4.2  队列的抽象数据类型 73

3.4.3  顺序队列 74

3.4.4  顺序循环队列 76

3.4.5  双端队列 79

3.4.6  链式队列 79

3.4.7  链式队列的实现 81

3.5  队列在杨辉三角中的应用 82

3.5.1 什么是杨辉三角 82

3.5.2  构造队列 83

3.5.3  杨辉三角队列的实现 83

3.6  小结 85

第4章  串、数组与广义表 86

4.1  串的定义及抽象数据类型 86

4.1.1  什么是串 86

4.1.2  串的抽象数据类型 87

4.2  串的存储表示 88

4.2.1  串的顺序存储结构 88

4.2.2  串的链式存储结构 89

4.3  串的模式匹配 90

4.3.1  朴素模式匹配算法——Brute-Force 90

4.3.2  改进算法—KMP算法 92

4.3.3  模式匹配应用举例 98

4.4  数组的定义及抽象数据类型 99

4.4.1  数组的基本概念 99

4.4.2  数组的抽象数据类型 100

4.4.3  数组的顺序存储结构 100

4.4.4  特殊矩阵的压缩存储 101

4.4.5  稀疏矩阵的压缩存储及典型应用 104

4.5  广义表 111

4.5.1  什么是广义表 111

4.5.2  广义表的抽象数据类型 112

4.5.3  广义表的头尾链表表示 113

4.5.4  广义表的扩展线性链表表示 113

4.6  小结 115

第5章  树和二叉树 116

5.1  树的定义和抽象数据类型 116

5.1.1  树的定义 116

5.1.2  树的逻辑表示 118

5.2  二叉树的定义、性质和抽象数据类型 118

5.2.1  二叉树的定义 119

5.2.2  二叉树的性质 120

5.2.3  二叉树的抽象数据类型 122

5.2.4  二叉树的存储表示 123

5.3  二叉树的遍历 125

5.3.1  二叉树遍历的定义 126

5.3.2  二叉树的先序遍历 126

5.3.3  二叉树的中序遍历 128

5.3.4  二叉树的后序遍历 130

5.4  二叉树的线索化 132

5.4.1  二叉树的线索化定义 132

5.4.2  二叉树的线索化算法实现 133

5.4.3  线索二叉树的遍历 135

5.4.4  线索二叉树的应用举例 137

5.5  树、森林与二叉树 139

5.5.1  树的存储结构 139

5.5.2  树转换为二叉树 142

5.5.3  森林转换为二叉树 143

5.5.4  二叉树转换为树和森林 143

5.5.5  树和森林的遍历 144

5.6  并查集 145

5.6.1  并查集的定义 145

5.6.2  并查集的实现 146

5.6.3  并查集的应用 149

5.7  哈夫曼树 151

5.7.1  哈夫曼树的定义 151

5.7.2  哈夫曼编码 152

5.7.3  哈夫曼编码算法的实现 153

5.8  小结 158

第6章  图 159

6.1  图的定义与相关概念 159

6.1.1  图的定义 159

6.1.2  图的相关概念 160

6.1.3  图的抽象数据类型 162

6.2  图的存储结构 163

6.2.1  邻接矩阵表示法 163

6.2.2  邻接表表示法 168

6.2.3  十字链表 172

6.2.4  邻接多重表 173

6.3  图的遍历 174

6.3.1  图的深度优先遍历 174

6.3.2  图的广度优先遍历 178

6.4  图的连通性问题 179

6.4.1  无向图的连通分量与生成树 180

6.4.2  最小生成树 181

6.5  有向无环图 187

6.5.1  AOV网与拓扑排序 187

6.5.2  AOE网与关键路径 190

6.6  最短路径 196

6.6.1  从某个顶点到其他顶点的最短路径 196

6.6.2  每一对顶点之间的最短路径 202

6.7  小结 206

第7章  查找 208

7.1  查找的基本概念 208

7.2  静态查找 209

7.2.1  顺序表的查找 209

7.2.2  有序顺序表的查找 211

7.2.3  索引顺序表的查找 213

7.3  动态查找 215

7.3.1  二叉排序树 215

7.3.2  平衡二叉树 221

7.4  B-树与B+树 227

7.4.1  B-树 227

7.4.2  B+树 233

7.5  哈希表 233

7.5.1  哈希表的定义 234

7.5.2  哈希函数的构造方法 234

7.5.3  处理冲突的方法 235

7.5.4  哈希表的查找与分析 237

7.5.5  哈希表应用举例 238

7.6  小结 242

第8章  排序 243

8.1  排序的基本概念 243

8.2  插入排序 244

8.2.1  直接插入排序 244

8.2.2  折半插入排序 246

8.2.3  希尔排序 246

8.2.4  插入排序应用举例 247

8.3  选择排序 248

8.3.1  简单选择排序 248

8.3.2  堆排序 249

8.4  交换排序 254

8.4.1  冒泡排序 254

8.4.2  快速排序 256

8.4.3  交换排序应用举例 258

8.5  归并排序 261

8.6  基数排序 263

8.6.1  基数排序算法 263

8.6.2  基数排序应用举例 266

8.7  小结 269

第9章  分治算法 271

9.1  分治算法的基本思想 271

9.2  求最大子序列的和 274

9.3  求x的n次幂 277

9.4  众数问题 278

9.5  求n个数中的最大者和最小者 280

9.6  整数划分问题 283

9.7  大整数乘法 285

9.8  小结 290

第10章  贪心算法 291

10.1  贪心算法的思想 291

10.2  找零钱问题 293

10.3  背包问题 295

10.4  删数问题 299

10.5  加油站问题 301

10.6  小结 302

第11章  回溯算法 303

11.1  回溯算法的基本思想 303

11.1.1  问题的解空间 304

11.1.2  回溯算法的基本思想 305

11.2  装载问题 307

11.3  旅行商问题 310

11.4  和式分解问题 314

11.5  小结 317

参考文献 318

课后习题(电子版见下载) 319

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/165437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-jdbcTemplate-配置数据库连接池,配置文件方式beans.xml

1、jdbc.properties jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql:///studb jdbc.userroot jdbc.pwd123456 2、beans.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&…

Python BDD 框架比较之 pytest-bdd vs behave

pytest-bdd和behave是 Python 的两个流行的 BDD 测试框架&#xff0c;两者都可以用来编写用户故事和可执行的测试用例&#xff0c; 具体选择哪一个则需要根据实际的项目状况来看。 先简单看一下两者的功能&#xff1a; pytest-bdd 基于pytest测试框架&#xff0c;可以与pytest…

港口大型设备状态监测及预测性维护策略

在现代港口运营中&#xff0c;大型设备的正常运行对于保障港口作业的高效性至关重要。为了实现设备的可靠性和持续性&#xff0c;港口管理者需要采取一系列状态监测和预测性维护策略。 推进自动化和智能化是提高港口大型设备状态监测和维护管理效率的重要途径。通过应用先进的…

【计算机网络笔记】数据链路层概述

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

读像火箭科学家一样思考笔记07_探月思维

1. 挑战“不可能”的科学与企业 1.1. 互联网 1.1.1. 和电网一样具有革命性&#xff0c;一旦你插上电源&#xff0c;就能让自己的生活充满活力 1.1.2. 互联网的接入可以帮助人们摆脱贫困&#xff0c;拯救生命 1.1.3. 互联网还可以提供与天气相关的信息 1.2. 用廉价、可靠的…

Windows如何截取屏幕图片以及动态图

在制作PPT或是其他演示文稿或是说明文档的时候&#xff0c; 常常需要截取网页或是屏幕的截图&#xff0c;在Windows中有多种方式可以实现截取屏幕。 Windows 截取屏幕图片的方式 在Windows 中截取屏幕中某个区块的方式有&#xff1a; 方式1. 最原始的方式&#xff1a; 点击 …

Unity机器学习 ML-Agents第一个例子

上一节我们安装了机器学习mlagents的开发环境&#xff0c;本节我们创建第一个例子&#xff0c;了解什么是机器学习。 我们的例子很简单&#xff0c;就是让机器人自主移动到目标位置&#xff0c;不能移动到地板范围外。 首先我们来简单的了解以下机器学习的过程。 机器学习的过…

分布式锁之基于zookeeper实现分布式锁(三)

3. 基于zookeeper实现分布式锁 实现分布式锁目前有三种流行方案&#xff0c;分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁之前&#xff0c;先回顾zookeeper的相关知识点 3.1. 知识点回顾 3.1.1. 安装启动 安装&#xff1a…

『亚马逊云科技产品测评』活动征文|搭建图床chevereto

『亚马逊云科技产品测评』活动征文&#xff5c;搭建图床chevereto 提示&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 文章目录 『…

利用STM32CubeMX解读时钟树

1&#xff0c;低速时钟 LSE是外部晶振作时钟源&#xff0c;主要提供给实时时钟模块&#xff0c;所以一般采用32.768KHz。LSI是由内部RC振荡器产生&#xff0c;也主要提供给实时时钟模块&#xff0c;频率大约为40KHz。(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及IWDG(独立看门…

佳易王羽毛球馆计时计费软件灯控系统安装教程

佳易王羽毛球馆计时计费软件灯控系统安装教程 佳易王羽毛球馆计时计费软件&#xff0c;点击开始计时的时候&#xff0c;自动打开灯&#xff0c;结账后自动关闭灯。 因为场馆每一场地的灯功率都很大&#xff0c;需要加装交流接触器。这个由专业电工施工。 1、计时计费功能 &…

使用Git bash切换Gitee、GitHub多个Git账号

Git是分布式代码管理工具&#xff0c;使用命令行的方式提交commit、revert回滚代码。这里介绍使用Git bash软件来切换Gitee、GitHub账号。     假设在gitee.com上的邮箱是alicefoxmail.com 、用户名为alice&#xff1b;在github上的邮箱是bobfoxmail.com、用户名为bob。 账号…

tcp/ip协议2实现的插图,数据结构2 (19 - 章)

(68) 68 十九1 选路请求与消息 函rtalloc,rtalloc1,rtfree (69)

HarmonyOS ArkTS 保存应用数据(十)

1 概述 在移动互联网蓬勃发展的今天&#xff0c;移动应用给我们生活带来了极大的便利&#xff0c;这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置&#xff0c;HarmonyOS应用开发也不例外。 2 什么是首选项 首选项为应用提供Key-Value键…

Electron+VUE3开发简版的编辑器【文件预览】

简版编辑器的功能主要是: 打开对话框,选择文件后台读取文件文件前端展示文件内容。主要技术栈是VUE3、Electron和Nodejs,VUE3做页面交互,Electron提供一个可执行Nodejs的环境以及支撑整个应用的环境,nodeJS负责读取文件内容。 环境配置、安装依赖这些步骤就不再叙述了。 …

SQL Server 百万数据查询优化技巧三十则

点击上方蓝字关注我 互联网时代的进程越走越深&#xff0c;使用MySQL的人也越来越多&#xff0c;关于MySQL的数据库优化指南很多&#xff0c;而关于SQL SERVER的T-SQL优化指南看上去比较少&#xff0c;近期有学习SQLSERVER的同学问到SQL SERVER数据库有哪些优化建议&#xff1f…

Linux进程通信——信号(一)

原理 对于 Linux来说&#xff0c;实际信号是软中断&#xff0c;许多重要的程序都需要处理信号。 信号&#xff0c;为 Linux 提供了一种处理异步事件的方法。比如&#xff0c;终端用户输入了ctrlc来中断程序&#xff0c;会通过信号机制停止一个程序。 概述 信号的名字和编号 …

【Docker】从零开始:8.Docker命令:Commit提交命令

【Docker】从零开始&#xff1a;8.Docker命令:Commit命令 基本概念镜像镜像分层什么是镜像分层为什么 Docker 镜像要采用这种分层结构 本章要点commit 命令命令格式docker commit 操作参数实例演示1.下载一个新的ubuntu镜像2.运行容器3.查看并安装vim4.退出容器5提交自己的镜像…

【数据结构/C++】线性表_双链表基本操作

#include <iostream> using namespace std; typedef int ElemType; // 3. 双链表 typedef struct DNode {ElemType data;struct DNode *prior, *next; } DNode, *DLinkList; // 初始化带头结点 bool InitDNodeList(DLinkList &L) {L (DNode *)malloc(sizeof(DNode))…

成为AI产品经理——模型评估概述

目录 一、模型宣讲和评估的原因 二、模型宣讲 三、模型评估 1. 重要特征 ① 特征来源 ②特征意义 2.选择测试样本 3.模型性能和稳定性 一、模型宣讲和评估的原因 刘海丰老师提到他们在做一个金融AI产品未注重模型指标&#xff0c;过于注重业务指标&#xff0c;导致产生…