随笔分类 -  数据结构

摘要:二叉堆 1、思考 设计一种数据结构,用来存放整数,要求提供 3 个接口 添加元素 获取最大值 删除最大值 有没有更优的数据结构? 堆 获取最大值:O(1)、删除最大值:O(logn)、添加元素:O(logn) 2、堆(Heap) 堆(Heap)也是一种树状的数据结构(不要跟内存模型中的“堆空间”混淆 阅读全文
posted @ 2021-04-18 17:24 codeFiler 阅读(113) 评论(0) 推荐(0) 编辑
摘要:哈希表的实现 1、TreeMap分析 时间复杂度(平均) 添加、删除、搜索:O(logn) 特点 Key必须具备可比较性 元素的分布是有顺序的 在实际应用中,很多时候的需求 Map中存储的元素不需要讲究顺序 Map中的Key不需要具备可比较性 不考虑顺序、不考虑Key的可比较性,Map有更好的实现方 阅读全文
posted @ 2021-04-18 16:54 codeFiler 阅读(234) 评论(0) 推荐(0) 编辑
摘要:解读红黑树 1、红黑树(Red Black Tree) 红黑树也是一种自平衡的二叉搜索树 红黑树必须满足一下5条性质 节点是RED或者BLACK 根节点是BLACK 叶子节点(外部节点,空节点)都是BLACK RED节点的子节点都是BLACK RED节点的parent都是BLACK 从根节点到叶子节 阅读全文
posted @ 2021-04-02 20:31 codeFiler 阅读(153) 评论(0) 推荐(0) 编辑
摘要:B-树 1、B树(B-tree、B-树) B树是一种平衡的多路搜索树,多用于文件系统、数据库的实现 仔细观察B树,我们可以看到 1个节点可以存储超过2个元素,可以拥有超过2个子节点 拥有二叉树的一些性质 平衡;每个节点的所有子树高度一致 比较矮 2、m阶B树的性质(m>=2) 假设一个节点存储的元素 阅读全文
posted @ 2021-03-28 19:11 codeFiler 阅读(125) 评论(0) 推荐(0) 编辑
摘要:06_AVL树 1、AVL树 平衡因子(Balance Factor):某节点的左右子树的高度差 AVL树的特点 每个节点的平衡因子只可能是1、0、-1(绝对值<=1,如果超过1,称之为“失衡”) 每个节点的左右子树高度差不超过1 搜索、添加、删除的时间复杂度是O(logn) 2、平衡对比 输入数据 阅读全文
posted @ 2021-03-26 10:08 codeFiler 阅读(165) 评论(0) 推荐(1) 编辑
摘要:05_二叉搜索树 1、二叉搜索树(Binary Search Tree) 二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为BST 又被称为:二叉查找树、二叉排序树 任意一个节点的值都大于其左子树所有节点的值 任意一个节点的值都小于其右子树所有节点的值 它的左右子树也是一棵二叉搜索树 阅读全文
posted @ 2021-03-26 10:07 codeFiler 阅读(63) 评论(0) 推荐(0) 编辑
摘要:04_二叉树 1、树形结构 2、生活中的树形结构 使用树形结构可以大大提高效率 树形结构是算法面试的重点 3、树的基本概念 节点、根节点、父节点、子节点、兄弟节点 节点:每个元素称为树的节点 如图中的所有元素都可以称为树的节点 根节点:有一个特定的结点被称为根结点或树根 如图中树的根节点即为1 父节 阅读全文
posted @ 2021-03-20 22:12 codeFiler 阅读(170) 评论(0) 推荐(0) 编辑
摘要:03_栈和队列 1、栈 1.1、什么是栈 栈是一种用于存储数据的简单数据结构(与链表类似)。数据入栈的次序是栈的关键。可以把一桶桶装的薯片看作是一个栈的例子,当薯片做好之后,它们会依次被添加到桶里,每一片都会是当前的最上面一片,而每次我们取的时候也是取的最上面的那一片,规定你不能破坏桶也不能把底部捅 阅读全文
posted @ 2021-03-14 13:36 codeFiler 阅读(194) 评论(0) 推荐(0) 编辑
摘要:02_链表 1、链表(Linked List) 动态数组有个明显的缺陷 可能会造成内存空间的大量浪费 能否用到多少就申请多少内存? 链表可以办到这一点 链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的 2、链表的接口设计 链表的大部分接口和动态数组是一致的 2.1、清空元素 - clea 阅读全文
posted @ 2021-03-12 15:35 codeFiler 阅读(92) 评论(0) 推荐(0) 编辑
摘要:01_动态数组 1、什么是数据结构? 数据结构是计算机存储、组织数据的方式 线性结构:线性表(数组、链表、栈、队列、哈希表) 树形结构:二叉树、AVL树、红黑树、B树、堆、Trie哈夫曼树、并查集 图形结构:邻接矩阵、邻接表 在实际应用中,根据使用场景来选择最合适的数据结构 2、线性表 线性表是具有 阅读全文
posted @ 2021-03-07 20:27 codeFiler 阅读(113) 评论(0) 推荐(0) 编辑
摘要:堆排序 给出一个记录序列,用堆排序的方法将其进行升序排列,输出结果,输出时要求有文字说明。 请任选一种语言编写程序实现上述算法,并分析其算法复杂度 堆排序 ​ 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种**选择排序,**它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳 阅读全文
posted @ 2020-12-10 16:42 codeFiler 阅读(269) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示