随笔分类 -  12_数据结构与算法

摘要:为什么要有图 为什么要有图 前面我们看了线性表和树 我们知道线性表局限于只有一个前驱和后继的关系 树也只能有一个直接前趋,但是可以有多个后继 但是这里有一些情况,假如我们需要使用多个直接前趋该怎么办呢?比如我们描述多对多关系的时候 假如说现在有学生和老师这种情况,学生要有多个老师,老师也有多个学生 阅读全文
posted @ 2021-01-29 15:46 嚎羸 阅读(102) 评论(0) 推荐(0)
摘要:二叉树的问题分析 二叉树是有问题的 二叉树需要加载到内存,假如二叉树的节点比较少,那么没有什么问题,假如二叉树的节点非常多(比如一亿),那么就会出现问题 1、在构建二叉树的时候,需要进行多次的I/O操作,节点海量,构建二叉树的时候,速度会有影响 2、节点海量,也就造成二叉树的高度非常高(2n-1), 阅读全文
posted @ 2021-01-27 12:25 嚎羸 阅读(66) 评论(0) 推荐(0)
摘要:堆排序 堆排序概述 假如一颗完全二叉树有如下性质:每个节点的值都大于等于(或者小于等于)它左右孩子节点的值,那么这种完全二叉树就可以称为堆 堆还分为大顶堆和小顶堆 大顶堆:每个节点的值都大于等于其左右子节点的值(左右子节点之间没有大小的规定) 小顶堆:每个节点的值都小于等于其左右子节点的值(左右子节 阅读全文
posted @ 2021-01-25 11:08 嚎羸 阅读(97) 评论(0) 推荐(0)
摘要:排序算法概述 排序的分类 排序的两种分类 1、内部排序:将所需要的数据先加到内存中,然后进行排序 2、外部排序:数据量无法一次性全部加载到内存中,需要借助外部存储器进行排序 常见的排序算法分类 内部排序 1、插入 直接插入排序 希尔排序 2、选择 简单选择排序 堆排序(在二叉树讲解完之后再讲) 3、 阅读全文
posted @ 2021-01-11 21:02 嚎羸 阅读(81) 评论(0) 推荐(0)
摘要:哈希表概述 我们平常使用HashMap的时候假如有多多了解原码就知道,HashMap其实底层就是使用的数组+链表/红黑树的形式,那么这种形式其实就叫做哈希表,也叫做散列表 英文叫做HashTable,没错,也就是我们集合中的HashTable 那么哈希表到底是个什么东西呢?哈希表其实是一种查询效率非 阅读全文
posted @ 2021-01-06 23:27 嚎羸 阅读(19) 评论(0) 推荐(0)
摘要:查找算法概述 在Java中,常用的查找算法有四种: 1、顺序(线性)查找 2、二分查找/折半查找 3、插值查找 4、斐波那契查找 线程查找 线性查找概述 线性查找十分简单。 现在有一个数列,可以是有序的,可以是无序的。 我们从头到尾依次寻找,如果找到了那么提示找到并返回下标。 代码实现 /** * 阅读全文
posted @ 2021-01-06 20:17 嚎羸 阅读(24) 评论(0) 推荐(0)
摘要:树的概述 为什么需要树这种数据结构 我们之前学过数组和链表 数组的查找快,但是对于增加值的时候要整体移动到新数组上,效率低。 链表这种数据结构插入的时候十分快,但是在检索的时候就比较慢了。 虽然我们在插入和检索的时候要根据需求来选择数据结构。 但是我们还是在想,有没有一种数据结构插入又快,检索又快。 阅读全文
posted @ 2021-01-06 20:12 嚎羸 阅读(47) 评论(0) 推荐(0)