随笔分类 -  数据结构

摘要:前言 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。 B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。 与自平衡二叉查找树不同,B-树为系统最优 阅读全文
posted @ 2019-11-28 20:29 王大军 阅读(1176) 评论(0) 推荐(0)
摘要:Hashtable声明 public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable Hashtable继承于Dictionary类(Dictionar 阅读全文
posted @ 2019-11-24 16:09 王大军 阅读(220) 评论(0) 推荐(0)
摘要:简介 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 记录的存储位置=f(关键字) 这里的对应关系f称为散列函数, 阅读全文
posted @ 2019-11-22 13:01 王大军 阅读(5433) 评论(0) 推荐(1)
摘要:前言 在我们学习红黑树之前,我们先来看看什么是2-3树 2-3树 2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。 2-3树是一种平衡搜索树。但2-3树已经不是一棵二叉树了,因为2-3树允许存在3这种节点,3节点中可以存放两个元素,并且可以有三个子节 阅读全文
posted @ 2019-11-21 20:56 王大军 阅读(181) 评论(0) 推荐(0)
摘要:简介 定义:在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 性质:1. 本身首先是一棵二叉搜索树。 2. 带有平衡条件:每个结点的左右子树的高度之差的绝对值(平 阅读全文
posted @ 2019-11-21 09:35 王大军 阅读(255) 评论(0) 推荐(0)
摘要:简介 字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。 优点:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 性质: 1. 根节点不包含字符,除根节点外每一个节点都只包含一个字符; 2. 从根节点到某一节点,路径上经过的字符连接起来, 阅读全文
posted @ 2019-11-20 14:52 王大军 阅读(253) 评论(0) 推荐(0)
摘要:什么是并查集? 讲个故事,大概就会明白! 江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管 阅读全文
posted @ 2019-11-19 21:38 王大军 阅读(272) 评论(0) 推荐(0)
摘要:一、什么是线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。 使用线段树可以快速的查找某一个节点在 阅读全文
posted @ 2019-11-19 15:54 王大军 阅读(212) 评论(0) 推荐(0)
摘要:什么是优先队列? 听这个名字就知道,优先队列也是一种队列,只不过不同的是,优先队列的出队顺序是按照优先级来的;在有些情况下,可能需要找到元素集合中的最小或者最大元素, 可以利用优先队列ADT来完成操作,优先队列ADT是一种数据结构,它支持插入和删除最小值操作(返回并删除最小元素)或删除最大值操作(返 阅读全文
posted @ 2019-11-18 20:59 王大军 阅读(645) 评论(0) 推荐(0)
摘要:一、简介 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 一棵深度为k,且有2^k-1个结点的二叉树,称为满二叉树。这种树的特点是每一层上的结点数都是最大结 阅读全文
posted @ 2019-11-07 20:36 王大军 阅读(961) 评论(0) 推荐(0)
摘要:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。 每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。 阅读全文
posted @ 2019-11-07 10:25 王大军 阅读(694) 评论(0) 推荐(0)
摘要:一、栈的简介 定义 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 由于堆叠数据结构只允许在一端进行操作,因而按照后进先出(LIFO == Last 阅读全文
posted @ 2019-11-06 22:07 王大军 阅读(1019) 评论(0) 推荐(0)
摘要:一、队列简介 定义 队列(queue)在计算机科学中,是一种先进先出的线性表。 它只允许在表的前端进行删除操作,而在表的后端进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 1. 队列是一种线性结构; 2. 相比数组,队列对应操作的是数组的子集; 3. 阅读全文
posted @ 2019-11-06 19:55 王大军 阅读(567) 评论(0) 推荐(0)
摘要:一、数组的介绍 数组:数据结构中最基本的一个结构就是线性结构,而线性结构又分为连续存储结构和离散存储结构。所谓的连续存储结构其实就是数组。 优点: 查询较快如果知道坐标可以快速去地存取 缺点: 删除慢,大小固定 二、封装数组 二次封装数组的增删改查 1. 基类的定义 定义一个工具类名称-Array 阅读全文
posted @ 2019-11-06 17:13 王大军 阅读(253) 评论(0) 推荐(0)