IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 山东大学项目实训树莓派提升计划二期(十二)book2内容分析与整理 -> 正文阅读

[数据结构与算法]山东大学项目实训树莓派提升计划二期(十二)book2内容分析与整理

在book1中,我们学习了java程序设计的基础,如字符与字符串、循环、数组等;了解并会运用java面向对象程序设计的抽象、封装、继承和多态,提升开发软件的极大灵活性、模块化和可重用性;在第五个实验中运用了JavaFX这个开发Java GUI程序的新框架进行GUI陈虚谷设计。

在book2的内容中,着重介绍数据结构和算法,包括Java集合框架、算法效率的度量、排序算法、线性表、优先队列、二叉树和AVL树等,以下是对书本内容进行的分析和整理。

参考文献:《Java语言程序设计与数据结构(进阶篇)》 梁勇(Y.Daniel Liang)

1.线性表、栈、队列和优先队列

数据结构是以某种形式将数据组织在一起的集合。数据结构不仅存储数据,还支持访问和处理数据的操作。如果具有数据结构的知识,我们就可以编写出更加高效的程序。在面向对象的思想里,数据结构也被认为是一种容器或者容器对象。在之前的博客中我们已经介绍了Arraylist类,本章还讲述了更多能有效地组织和操作数据的数据结构(线性表、向量、栈、队列、优先队列、规则集和映射)。

需要学习的内容如下:

  • 使用Collection接口中定义的通用方法来操作集合。
  • 如何使用ArrayList或LinkList来存储元素线性表。
  • 使用Collections类中的静态工具方法来排序、查找和打乱线性表,以及找出集合的最大元素和最小元素。
  • 区分Vector和ArrayList,然后使用Stack类创建栈。
  • 探索Collection、Queue、LinkList以及PriorityQueue之间的关系,然后使用PriorityQueue类创建优先队列。

2.排序

排序算法展示了许多问题求解的创造性的方法,有助于使用选择语句、循环、方法和数组来练习基本的程序设计计数,且是演示算法性能的极好例子。

本章学习目标:

  • 研究和分析各种排序算法的时间复杂度。
  • 设计、实现和分析插入排序。
  • 设计、实现和分析冒泡排序。
  • 设计、实现和分析归并排序。
  • 设计、实现和分析快速排序。
  • 设计、实现一个二叉堆。
  • 设计、实现和分析堆排序。
  • 设计、实现和分析桶排序、基数排序。
  • 设计、实现和分析针对具有大量数据的文件的外部排序。

3.二叉搜索树

在本章之前介绍了数组线性表和链表的实现,在这些数据结构中,查找、插入和删除操作的时间复杂度是O(n)。在这一章中给出了一种新的数据结构,称为二叉搜索树。它花费O(logn)的平均时间来进行查找、插入和删除元素。

本章中我们需要了解:

  • 设计并实现二叉搜索树。
  • 使用链式数据结构表示二叉树。
  • 在二叉搜索树中查找元素。
  • 在二叉搜索树中插入元素
  • 遍历二叉树中的元素。
  • 从二叉搜索树中删除元素。
  • 使用二叉搜索树实现用于压缩数据的霍夫曼编码。

4.AVL树

由上一章可知,二叉树的查找、插入和删除操作的时间依赖于树的高度。最坏情形下,高度为O(n)。如果一棵树是完全平衡的,即高度是logn,那么搜索的时间就会相应的缩短些。但是维持完全平衡的代价较大,一个妥协的做法是维护一棵良好平衡的树,即每个结点的两个子树的高度基本一样。本章介绍的AVL树正是这样的树。

本章中需要学习的内容如下:

  • 了解什么是AVL树。
  • 理解如何用LL旋转、RR旋转以及LR旋转来重新平衡一棵树。
  • 通过继承BST类设计AVLTree类。
  • 实现树的重新平衡。
  • 从AVL树中删除元素。
  • 分析在AVL树中查找、插入和删除操作的复杂度。

5.图及其应用

图对现实世界的问题的建模和解决非常有用,真实世界的许多问题可以用图算法解决。例如,可以使用图对找寻两座相邻城市之间最小飞行次数的问题进行建模等。

本章学习内容如下:

  • 理解描述图中的术语:顶点、边、简单图、加权/非加权图以及有向/无向图。
  • 使用线性表、边数组、边对象、邻接矩阵和邻接线性表来表示顶点和边。
  • 使用Graph接口和UnweightedGraph类来对图进行建模。
  • 使用UnweightedGraph.SearchTree类来表示对图的遍历。
  • 设计并且实现深度优先搜索。
  • 设计并实现广度优先搜索。
  • 使用深度优先搜索解决连通圆问题。
  • 使用广度优先搜索解决9枚硬币反面的问题。

6.加权图及其应用

如果图的每条边都赋予一个权重,则该图是一个加权图。加权图也有很多实际的应用。

本章我们需要了解:

  • 使用邻接矩阵和临界线性表来表示加权边。
  • 使用继承自UnweightedGraph类的WeightedGraph类来对加权图建模。
  • 设计并实现最小生成树算法。
  • 设计并实现得到单元最短路径的算法。
  • 用最短路径算法来解决甲醛9枚硬币反面的问题。

7.集合流的聚合操作

一个集合流,是一个元素序列。对集合流的操作称为聚合操作,也称为流操作。使用集合操作将细节的实现给了计算机,这使代码变得简洁和简单,此外,可以利用多个处理器并行的执行流上的操作。因此,使用聚合操作编写的代码通常比使用foreach的代码运行的快。

本章的学习目标:

  • 对集合流使用聚合操作来简化代码和提高性能。
  • 在流上创建一个流管道,使用惰性中间方法和终止方法。
  • 创建并行流以实现快速执行。
  • 使用reduce方法将流中的元素减少为单一结果。
  • 使用collect方法将流中元素放入可变集合。
  • 将流中元素分组并对组中的元素使用聚合方法。
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章           查看所有文章
加:2022-05-05 11:44:27  更:2022-05-05 11:49:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:32:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码