算法与数据结构
code配上格子衫
终身学习
展开
-
深入理解堆 —— 堆的底层实现,堆排序,TopK问题
概念 结构特点 堆(数据结构) 逻辑上:完全二叉树 物理上:数组 堆是一种顺序存储结构(采用数组方式存储),仅仅是利用完全二叉树的顺序结构的特点进行分析。 结点下标计算公式(根节点从0开始) 已知二叉树根结点的下标是root,那么它左孩子的下标left=2root+1,右孩子的下标right=2root+2。 已知孩子结点的下标(不区分左右)为child,那么双亲的下标为(child-1)/2。 如果从1开始,则已知root,则左孩子节点left=2root+1,right=2root+2。已知chil原创 2020-09-10 15:20:51 · 978 阅读 · 0 评论 -
并查集详解 —— c++实现
并查集原理 将不同元素划分到不同的集合,开始时, 每个元素就是一个集合,然后按照一定的规律进行集合的合并,这样就可以查找集合的数目,元素的归属,将复杂问题简化。 并查集应用 1. 查找元素属于哪一个集合 2. 查看两个元素是否在同一个集合 3. 合并两个集合 4. 集合的个数 并查集实现 class UnionFindSet { public: UnionFindSet(size_t number) { _ufs.resize(number, -1); } int FindRoot(int ind原创 2020-08-09 12:41:53 · 320 阅读 · 0 评论 -
由浅入深的探索Hash!
文章目录unordered系列的关联式容器底层结构哈希概念哈希冲突哈希函数哈希冲突解决方式闭散列开散列模拟实现哈希表unordered_mapunordered_set哈希的应用位图概念应用布隆过滤器概念优点与缺陷哈希切割 unordered系列的关联式容器 树结构的关联式容器使用方式基本类似,只是其底层结构不同 可分为 unordered_map和unordered_set和unordered_multimap和unordered_multiset 这几种。 以unordered_map为例 unorde原创 2020-07-10 20:28:33 · 186 阅读 · 0 评论 -
AVL树的概念与实现
文章目录概念AVL树的概念特点实现AVL树节点定义AVL树的插入AVL树的旋转AVL树的查找 概念 AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜原创 2020-06-23 19:08:54 · 201 阅读 · 0 评论 -
二叉搜索树(BST)的概念与实现
文章目录概念二叉搜索树的概念实现二叉搜索树插入元素二叉搜索树查找元素二叉搜索树删除元素性能分析 概念 二叉搜索树的概念 二叉树搜索树也是二叉树的一种,只是因为二叉树具有如下概念,因此可以实现一些特殊的功能 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 基于上面的特性,二叉搜索树是不允许进行修改的,因为一旦修改某个节点的值,那么这颗树就不符合二叉搜索树性质了。 因此我们从二叉搜索树的增删查三个方面来对原创 2020-06-23 12:58:57 · 222 阅读 · 0 评论