数据结构以及算法
知其然,知其所以然
这个作者很懒,什么都没留下…
展开
-
数据结构10之哈希表
TreeMap分析 ◼ 时间复杂度(平均) 添加、删除、搜索:O(logn) ◼ 特点 Key 必须具备可比较性 元素的分布是有顺序的 ◼ 在实际应用中,很多时候的需求 Map 中存储的元素不需要讲究顺序 Map 中的 Key 不需要具备可比较性 ◼ 不考虑顺序、不考虑 Key 的可比较性,Map 有更好的实现方案,平均时间复杂度可以达到 O(1) 那就是采取哈希表来实现 Map 需求分析: 设计...原创 2019-12-16 18:32:52 · 382 阅读 · 0 评论 -
数据结构九之红黑树
红黑树也是一种自平衡的二叉搜索树 以前也叫做平衡二叉B树(Symmetric Binary B-tree) 红黑树必须满足以下 5 条性质 1、节点是 RED 或者 BLACK 2、根节点是 BLACK 3、 叶子节点(外部节点,空节点)都是 BLACK 4、 RED 节点的子节点都是 BLACK和父节点都是黑色,从根节点到叶子节点的所有路径上不能有 2 个连续的 RED 节点 5、从任一节点到叶...原创 2019-12-16 17:33:11 · 189 阅读 · 0 评论 -
数据结构八之B树
B树是一种平衡的多路搜索树,多用于文件系统,数据库的实现 B树的特点 1、一个节点可以储存超过两个元素,可以拥有超过两个子节点 2、拥有二叉搜索树的一些性质 3、平衡:每个节点的子树的高度都是一样 4、比较矮 m阶B树的性质 假设一个节点存储的元素个数为 x 1:根节点元素数量:1 ≤ x ≤ m − 1 2:非根节点元素的数量:┌ m/2 ┐ − 1 ≤ x ≤ m − 1: 如果有子节点...原创 2019-12-16 16:44:57 · 866 阅读 · 0 评论 -
数据结构七之AVL树
平衡因子:某个节点的左右子树的高差 AVL树的特点: 1、每个节点的平衡因子只可能为0,1,-1 (平衡因子的绝对值<=1) 2、搜索、添加、删除的时间复杂度为O(logn) 普通二叉搜索树和AVL树的搜索比较: 树的继承结构: 实例:往树中添加节点 1、最坏的情况:可能会导致所有的祖先节点全部失衡 2、父节点和非祖先节点都不会 失衡 AVL树添加或删除节点后,通过旋转返回平衡(即把每个节点...原创 2019-12-14 00:04:07 · 177 阅读 · 0 评论 -
数据结构三之链表
上个章节学习了动态数组,我们可以知道,动态数组有个明显的缺点,就是可能会造成内存的巨大浪费,那么能否做到用到多少内存就申请多少内存呢?,答案是肯定的,链表可以。 链表是一种链式储存的线性表,所有元素的地址不一定是连续的。 链表细分又分为单向链表和双向链表,上图就是单项链表 链表的设计及实现 ...原创 2019-12-10 15:51:27 · 86 阅读 · 0 评论 -
数据结构二之动态数组
在学习动态数组的时候我们先来认识一下什么是数据结构 数据结构是计算机存储和组织数据的结构 按照结构形式,常见的有线性结构、树形结构、图形结构 1、线性结构 线性表是指:具有n个相同类型元素的有限序列(n >= 0) 常见的线性结构有:数组、链表、栈、队列、哈希表(散列表) 2、树形结构 常见的属性结构有:二叉树、二叉搜索树、平衡二叉树、AVL树、红黑树、B树等 3、图形结构 常见的图形...原创 2019-12-08 22:45:05 · 307 阅读 · 1 评论 -
数据结构六之树的基本概念
树形结构 树 的基本概念 1、节点:根节点、父节点、子节点、兄弟节点 2、空树:一棵树没有任何节点称为空树 3、一棵树可以只有一个节点,即只有根节点 4、子树又分左子树、右子树 5、节点的度:表示子树的个数 6、树的度:所有节点度中的最大值 7、叶子节点:度为0的个数 8、非叶子节点:度不为0的节点 9、层数:根节点在第一层,根节点的子节点在第二层,以此类推 10、节点的深度:从根节点到...原创 2019-12-05 19:50:21 · 691 阅读 · 0 评论 -
数据结构一之复杂度
什么是算法? 算法是解决特特定问题的一系列的执行步骤 例如: //计算a和b的和 public static int plus(int a,int b){ return a + b; } //计算1+2+3+4+5+.. public static int sum(int n){ int result = 0; f...原创 2019-12-05 16:12:41 · 129 阅读 · 0 评论