数据结构基础
文章平均质量分 60
北海道恋人
某不知名大学在校学生
展开
-
数据结构-实现一个SimpleBloomFilter布隆过滤器
SimpleBloomFilter布隆过滤器是一种判断元素是否存在的数据结构使用一系列的二进制位来判断元素是否存在特点:效率很高但有误判的可能误判:当插入一个元素的时候根据hash函数将该元素使用随机的几位二进制进行表示当查找时只有元素对应的所有二进制位都为1时代表查询成功该元素可能存在(原因:可能会存在某个元素虽然不在过滤器中,但是刚好hash得到的几位二进制都为1,即表示元素存在)如果一个元素哈希的二进制位有一位是0 就代表元素不存在总结:布隆过滤器是一个判断元素是否可能存在的数原创 2021-03-19 15:00:05 · 127 阅读 · 0 评论 -
数据结构-单调栈 leetcode 下一个更大的数
数据结构-单调栈 leetcode 下一个更大的数2由leetcode题目引入:刷题时看到这道题,第一反应使用循环数组暴力解题了,附上代码暴力解题代码public static int[] nextGreaterElements(int[] nums) { int[] res = new int[nums.length]; Arrays.fill(res,-1); int j; int index; for (int原创 2021-03-06 11:35:07 · 215 阅读 · 0 评论 -
数据结构-优先队列(最大优先队列、最小优先队列、索引优先队列)Java实现
数据结构-优先队列(最大优先队列、最小优先队列、索引优先队列)由于队列先进先出的特性,无法灵活按照优先级进行数据的获取。但是在应用中又有此类需求,例如计算机按照优先级进行的任务调度。所以需要对于队列进行改进,以满足此类需求使用堆的数据结构,可以很方便的获取当前等待队列中的最大值或最小值,所以对于优先队列可以采用堆的方式完成一、最大优先队列每次都获取队列中的最大值参考代码package priority;/** * 实现最大优先队列 * <T extend Comparable&g原创 2020-08-09 20:28:09 · 427 阅读 · 0 评论 -
数据结构复习之AVL树(AVL树的概念、左旋、右旋操作保证平衡)Java实现
数据结构复习之AVL树(AVL树的概念、左旋、右旋操作保证平衡)文章目录数据结构复习之AVL树(AVL树的概念、左旋、右旋操作保证平衡)一、平衡查找二叉树二、如何旋转三、参考代码一、平衡查找二叉树由于二叉查找树在某些极端情况下可能会形成一个链表,使其性能大大降低,故AVL树作为对其的一种改进AVL改进的方式,数据的插入仍然遵循二叉查找树的特性,但是需要在元素插入时候保证其左右子树的高度之差<=1,如果不满足,则需要通过旋转来保证树的平衡性二、如何旋转对于元素插入导致AVL树失衡的情况有四种原创 2020-08-07 17:49:05 · 493 阅读 · 5 评论 -
数据结构复习之图的入门(深度优先搜索和广度优先搜索递归实现)
数据结构之图的入门一、图的定义及分类定义:图是有一组顶点和一组能够将两个顶点相连的边组成的特殊的图:自环:即一个顶点有一条连接自己的边平行边:连接同一对顶点的边图的分类:按照连接两个顶点的边的不同,图可以分为两种无向图:边仅仅连接两个顶点,没有方向有向图:边不仅连接两个顶点,并且具有方向1.1 无向图图的相关术语:相邻顶点:当两个顶点通过一条边相连时,我们称这两...原创 2020-04-24 22:59:11 · 489 阅读 · 0 评论 -
数据结构复习之树与二叉树(上)
数据结构之树一、树的基本概念树是一种重要的数据结构,树是由n(n>=1)个有限结点组成的一个具有层次关系的集合。树的特点:每个结点有零个或多个子结点没有父结点的结点为跟结点每个非根结点只有一个父结点每个结点及其后代整体可以看做一棵树,称为当前结点的父结点的一个子树树的相关术语:结点的度:一个结点含有的子树的数量称为该结点的度叶结点:度为零的结点,也可以称为终端结点...原创 2020-04-22 15:54:44 · 155 阅读 · 0 评论 -
数据结构复习之排序(选择and归并)Java版
排序算法复习三、选择排序选择排序:类似插入排序,也分为有序区和无序区。但是选择排序每次从无序区中选出最小的元素放在有序区的最后一位步骤:最初整个数列都位于无序区中,选出其中最小值将其放入有序区的最后一位(第一次即为数组的第零位)重复以上步骤package SortTest;import java.util.Random;public class ChoiceSortedT...原创 2020-04-21 13:25:36 · 102 阅读 · 0 评论 -
数据结构复习之排序算法复习(冒泡and插入)Java版
排序算法复习一、冒泡排序冒泡排序:重复遍历要排序的数列,每次比较两个元素,如果位置错误就将其交换。因为像泡泡浮出水面,故而名曰冒泡排序。步骤:每次从数列底部选择一个元素,与其上一个元素进行比较。内层循环控制将一个元素排序外层循环控制总共需要排序元素总数优化:在排序中中途可能即已经有序,此时不会交换元素,但是还有元素仍未被排序,所以会进行一些无意义的循环当有序时不交换元素,设...原创 2020-04-20 18:55:18 · 150 阅读 · 0 评论 -
数据结构复习之排序算法复习(快排and希尔)Java版
五、快速排序快速排序:通过一趟排序将要排序的数据分割成两个独立的部分,其中一部分比基准数据要小,另一部分比基准数据要大。整个切分过程递归执行,以此使整个数据变成有序序列步骤:设定一个分界值(一般为数据的第一个元素)设置左右两个指针,右指针寻找小于分界值的元素,左指针寻找大于分界值的元素当其中一方找到后停在那里等另一方,都找到后两人将元素交换位置重复以上步骤当左右指针指向同一元素时,...原创 2020-04-21 16:49:37 · 117 阅读 · 0 评论 -
数据结构复习之图(拓扑排序and加权无向图)
1.4 有向图有向图与无向图类似,只是边有了方向而已基本概念:出度:由某个顶点指出的边的个数称为该顶点的出度入度:指向某个顶点的边的个数称为该顶点的入度有向路径:由一系列顶点组成,对于其中的每个顶点都存在一条有向边,从该顶点指向下一个顶点有向环:起点和终点相同的有向图手搓有向图:package GraphTest;import LinearTest.QueueTest;...原创 2020-04-26 13:51:11 · 677 阅读 · 0 评论 -
数据结构复习之红黑树B树B+树(HashMap底层红黑树,磁盘I/OB树、数据库索引B+树)
五、红黑树2-3查找树能保证在插入元素之后,树依然保持平衡状态,它的最坏情况下所有子结点都是2-结点,树的高度为lgN,相比普通的二叉查找树保证了最坏情况下的时间复杂度。红黑树是2-3树思想的简单实现红黑树主要是对2-3树进行编码,红黑树背后的基本思想是(标准的二叉查找树)和一些额外的信息替换3-结点来表示2-3树。所以将树中的链接分为两种类型:红链接:将两个2-结点链接起来构成一个3-结点...原创 2020-04-24 16:18:11 · 807 阅读 · 0 评论 -
排序方法之计数排序
今日小算法计数排序问题概述:利用数组下标进行元素排序思路:创建一个辅助数组,利用下标自然有序的特性进行排序最好的情况下时间复杂度可以是线性的package SortTest;/** * 计数排序 * 需要提前知道元素的大致范围,创建一个新的辅助数组大小恰好可以为原数组max+1 * 之后按照下标向辅助数组中放元素 * 最后遍历辅助数组输出(还需遍历每位直至其下标对应的元素为0)即可 */public class CountSortTest { public static原创 2020-06-13 14:31:43 · 152 阅读 · 0 评论