当前位置:当前位置:主页 > 计算机电子书 > Java > 数据结构 pdf电子书
数据结构和算法基础(Java语言实现)

数据结构和算法基础(Java语言实现) PDF 高清版

  • 更新:2022-04-05
  • 大小:36.8 MB
  • 类别:数据结构
  • 作者:柳伟卫
  • 出版:北京大学出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

数据结构和算法基础(Java语言实现)》是由北京大学出版社出版的一本关于数据结构方面的书籍,作者是柳伟卫,主要介绍了关于数据结构、算法、Java语言方面的知识内容,目前在数据结构类书籍综合评分为:9.5分。

书籍介绍

编辑推荐

1.通俗易懂,系统全面:内容由预备知识→数据结构→常用算法→商业实战层层推进,手把手教你从零开始编写数据结构和算法;
2.案例典型,实战性强:深入JDK源码讲解数据结构和算法的实现原理,用案例训练实战,用代码落实理论;
3.附赠资源,在线答疑:不仅附赠案例源代码,而且读者可进入作者个人开源社区,随时与作者交流,学习全的前沿编程技术

内容简介

  随着云计算、大数据、人工智能、虚拟现实等应用的兴起,企业对于开发人员的算法要求也越来越高。《数据结构和算法基础(Java语言实现)》全面讲解了在编程中涉及到的常用的数据结构及算法,同时,辅以大量的实战案例,图文并茂,令读者易于理解掌握。同时,案例的选型偏终于解决实际问题,具有很强的应用性、趣味性。全书示例采用Java语言编写,书中示例也可以作为面试使用。

《数据结构和算法基础(Java语言实现)》书分为以下几部分:部分 预备知识(第1-2章):介绍数据结构和算法的基本概念,并演示如何搭建开发环境、编写测试用例。第二部分 数据结构(第3-14章):介绍常见的数据结构,包括数组、链表、矩阵、栈、队列、跳表、散列、树、图等。第三部分 常用算法(第15-20章):介绍常用的算法,包括分而治之、动态规划、贪婪算法、回溯、分支界定、遗传算法等。第四部分 商业实战(第21-22章):介绍汉诺塔及五子棋两款游戏的实现。《数据结构和算法基础(Java语言实现)》适合对Java数据结构及算法感兴趣的学生、开发人员和架构师阅读。

作者简介

柳伟卫,网名老卫、waylau,在 IT 公司担任项目经理、架构师、高级技术顾问等职位,是 CSDN、 开源中国、云栖社区等技术社区专家,慕课网特邀讲师。具有多年软件开发管理及系统架构经验。负责过多个省、大型分布式系统的设计与研发,参与了多个大型项目的微服务架构的技术改造,在实际工作中,积累了大量系统架构、大数据处理以及性能调优经验。已经出版了《分布式系统常用技术及案例分析》《Spring Boot 企业级应用开发实战》《Spring Cloud 微服务架构开发实战》《Spring 5 开发大全》《Cloud Native 分布式架构原理与实践》《大型互联网应用轻量级架构实战》等专著。

目录

  • 第1章 绪论 1
  • 1.1 引言 2
  • 1.1.1 数据结构概述 2
  • 1.1.2 什么是算法 5
  • 1.1.3 算法的描述 5
  • 1.2 程序的性能 9
  • 1.2.1 程序的性能 9
  • 1.2.2 程序的性能 10
  • 1.3 渐近记法 12
  • 1.3.1 大O标记法 12
  • 1.3.2 大Ω标记法 12
  • 1.3.3 大Θ标记法 13
  • 1.3.4 渐近记法总结 13
  • 1.4 算法复杂度等级及其分析 13
  • 1.4.1 常数的时间复杂度O(1) 14
  • 1.4.2 对数的时间复杂度O(logn) 14
  • 1.4.3 线性的时间复杂度O(n) 15
  • 1.4.4 平方的时间复杂度O(n2) 16
  • 1.4.5 指数的时间复杂度O(2n) 16
  • 1.4.6 算法复杂度总结 17
  • 1.5 总结 17
  • 1.6 习题 18
  • 第2章 开发环境搭建及测试 19
  • 2.1 安装JDK 20
  • 2.1.1 解压.zip文件到指定位置 20
  • 2.1.2 设置环境变量 20
  • 2.1.3 验证安装 21
  • 2.2 安装Maven 22
  • 2.2.1 安装 22
  • 2.2.2 设置本地仓库 22
  • 2.2.3 设置镜像 23
  • 2.3 安装IDE 23
  • 2.3.1 解压.zip文件到指定位置 23
  • 2.3.2 配置工作区间 24
  • 2.3.3 配置JDK 24
  • 2.3.4 配置Maven 24
  • 2.3.5 设置字符编码 26
  • 2.4 实战:编写单元测试用例 26
  • 2.4.1 创建HelloWorld类 26
  • 2.4.2 使用JUnit5 27
  • 2.4.3 编写JUnit5测试用例 27
  • 2.5 总结 29
  • 2.6 习题 29
  • 第3章 顺序表 30
  • 3.1 Java数组初探 31
  • 3.2 线性表数据结构 32
  • 3.3 实战:使用数组实现顺序表
  •    SequentialList 37
  • 3.4 顺序表的动态扩容 47
  • 3.4.1 顺序表的动态扩容原理 47
  • 3.4.2 动态扩容机制的选择 48
  • 3.4.3 ArrayList动态扩容分析 49
  • 3.4.4 Vector动态扩容分析 50
  • 3.4.5 选择ArrayList还是Vector 52
  • 3.5 总结 52
  • 3.6 习题 52
  • 第4章 链表 53
  • 第5章 数组和矩阵 93
  • 第6章 栈 114
  • 6.1 基本概念及应用场景 115
  • 6.1.1 栈的基本概念 115
  • 6.1.2 栈的应用场景 115
  • 6.2 抽象数据类型 117
  • 6.3 数组描述 117
  • 6.4 实战:使用数组实现栈
  •    SequentialListStack 117
  • 6.4.1 成员变量及构造函数 117
  • 6.4.2 统计栈的规模 118
  • 6.4.3 判断栈中的数据元素是否为空 118
  • 6.4.4 入栈 118
  • 6.4.5 出栈 119
  • 6.4.6 引用栈顶对象 119
  • 6.4.7 时间复杂度分析总结 119
  • 6.4.8 单元测试 119
  • 6.5 链表描述 121
  • 6.6 实战:使用链表实现栈
  •    SinglyLinkedListStack 122
  • 6.6.1 成员变量及构造函数 122
  • 6.6.2 统计栈的规模 122
  • 6.6.3 判断栈中的数据元素是否为空 122
  • 6.6.4 入栈 123
  • 6.6.5 出栈 123
  • 6.6.6 引用栈顶对象 123
  • 6.6.7 时间复杂度分析总结 123
  • 6.6.8 单元测试 123
  • 6.7 总结 125
  • 6.8 习题 125
  • 第7章 队列 126
  • 第8章 跳表和散列 183
  • 8.1 字典 184
  • 8.1.1 跳表 184
  • 8.1.2 散列 185
  • 8.2 抽象数据类型 186
  • 8.2.1 Dictionary抽象类 186
  • 8.2.2 Map接口 187
  • 8.2.3 Dictionary抽象类和Map接口
  •    的抉择 194
  • 8.3 散列HashMap 194
  • 8.3.1 HashMap的声明 195
  • 8.3.2 HashMap的成员变量和构造
  •    函数 201
  • 8.3.3 HashMap的核心方法 203
  • 8.3.4 实战:HashMap的单元测试 210
  • 8.3.5 实战:HashMap的应用案例
  •    ——词频统计 214
  • 8.4 基于跳表实现的
  •    ConcurrentSkipListMap 216
  • 8.4.1 ConcurrentSkipListMap的声明 216
  • 8.4.2 ConcurrentSkipListMap的成员
  •    变量和构造函数 217
  • 8.4.3 ConcurrentSkipListMap的核心
  •    方法 219
  • 8.4.4 实战:ConcurrentSkipListMap
  •    的单元测试 232
  • 8.4.5 实战:ConcurrentSkipListMap
  •    的应用案例——词频统计 235
  • 8.5 实战:文本压缩 237
  • 8.5.1 文本的压缩和解压 238
  • 8.5.2 文本的压缩和解压的实现 238
  • 8.5.3 测试文本的压缩和解压 240
  • 8.6 总结 242
  • 8.7 习题 243
  • 第9章 树及二叉树 244
  • 9.10 习题 272
  • 第10章 优先级队列及堆 273
  • 10.1 基本概念及应用场景 274
  • 10.2 抽象数据类型 274
  • 10.3 数组描述 274
  • 10.4 实战:使用数组实现优先级队列 275
  • 10.4.1 定义实现类 275
  • 10.4.2 实现插入 276
  • 10.4.3 实现删除 278
  • 10.4.4 单元测试 279
  • 10.5 堆描述 282
  • 10.5.1 堆的定义 283
  • 10.5.2 堆和普通树的区别 283
  • 10.5.3 堆的存储 284
  • 10.5.4 堆的常用操作 284
  • 10.6 实战:使用堆实现优先级队列 285
  • 10.6.1 定义实现类 286
  • 10.6.2 实现插入 287
  • 10.6.3 实现删除 289
  • 10.6.4 单元测试 291
  • 10.7 总结 293
  • 10.8 习题 294
  • 第11章 二叉查找树 295
  • 第12章 平衡查找树 311
  • 第13章 图 361
  • 第14章 分而治之 438
  • 第15章 贪心算法 461
  • 第16章 动态规划 473
  • 第17章 回溯 490
  • 第18章 遗传算法 502
  • 第19章 蚂蚁算法 528
  • 第20章 汉诺塔游戏 555
  • 20.1 实战:汉诺塔问题 556

资源获取

相关资源

网友留言