算法
文章平均质量分 70
算法学习
悲伤土豆拌饭
做一个cool guy
展开
-
算法 等价类、并查集与图
等价关系与等价类等价集的初始状态,其数值都是-1,根据等价关系对齐数值进行修改假如0 = 4,于是将 4结点的数值加至 0 结点,并将0作为4结点的新数值 ,那么此时0结点就是3结点的根并查集的建立class UFSets{ int* parent; int size;public: UFSets(int sz) :size(sz) { parent = new int[size]; for (int i = 0; i < size; ++i) { par原创 2022-05-13 13:14:57 · 435 阅读 · 0 评论 -
算法 B+树 B*树
B+ 树B+ 树的概念B+ 树的定义B+ 树的插入B+ 树的概念B+ 树可以看作是B- 树的一种变形,再实现文件索引结构方面比B- 树使用得更普遍一颗 m 阶 B+ 树可以定义如下:树中每个非叶结点最多有m棵子树根节点(非叶结点)至少有 2 颗子树,除了根结点外,其它的非叶结点至少有[m/2]棵子树,有 n 棵子树的非叶结点有 n-1 个关键码所有的叶节点都处于同一层次上,包含了全部关键码及指向相应数据对象存放地址的指针,且叶结点本身按关键码从小到大顺序链接每个叶结点中的子树棵树 n 可原创 2022-05-11 17:52:24 · 488 阅读 · 0 评论 -
算法 B树
B树B- 树的概念B- 树的定义B- 树的插入B- 树遍历B- 树的删除B- 树的概念B树就是B-Tree,B-Tree的定义:根节点子女数为[2,m];除根节点和叶结点以外的所有分支结点至少有[ [m/2] , m]个子女;所有的叶结点都位于同一层;m 阶 B-Tree 的节点结构如下:n, S0, (K1,S1), (K2,S2), … ,(Kn,Sn)其中 Si 是指向子树的指针,0 <= i <= n < m;Ki是关键码,1 <= i <= n&l原创 2022-05-10 21:46:06 · 470 阅读 · 0 评论 -
算法 T树(键树)
T树T树T树的定义T树的插入T树键树又称数字查找树(Digital Search Trees),它是一颗度>=2的树,树种的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号,例如,若关键字是数值,则结点中只包含一个数位;若关键字是单词,则结点中只包含一个字母字符,这种树会给某种类型关键字的表的查找带来方便T树的定义const int MaxKeySize = 25;const int LETLEN = 27;typedef enum { BRCH = 0, ELEM = 1原创 2022-05-10 15:57:25 · 630 阅读 · 0 评论 -
算法 红黑树
红黑树红黑树概述红黑树性质红黑树的插入红黑树概述红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学的中用到的一种数据结构,典型的用途是实现关联数组,红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能它虽然是复杂到,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目红黑树性质红黑树是每个结点都带有颜色属性的二叉查找树,颜色是红色或黑色,原创 2022-05-10 15:58:38 · 793 阅读 · 0 评论 -
算法 二叉树 AVL树
AVL树AVL树的定义结点的平衡因子 balanceAVL树的定义一颗AVL树或者是空树,或者是具有下列性质的二叉搜索树:它的左子树和右子树都是AVL树,且左子树和右子树的高度只差绝对值不超过 1结点的平衡因子 balance每个结点附加一个数字,给出该结点右子树的高度减去左子树的高度所得的高度差,这个数字即为结点的平衡因子balance根据AVL 树的定义,任一结点的平衡因子只能取 -1、0 和 1如果一个结点的平衡因子的绝对值大于1,则这颗二叉搜索树就失去了平衡,不再是AVL树如果一棵原创 2022-05-09 18:05:55 · 464 阅读 · 2 评论 -
算法 动态规划 打家劫舍
分析得出,dp[k] = max(dp[k-1],dp[k-2]+nums[k])int rob(vector<int>& nums){ int n = nums.size(); if (n <= 0) return 0; if (n == 1) return nums[1]; vector<int> dp(n, 0); dp[1] = nums[1]; dp[2] = max(nums[1], nums[2]); for (int i = 3; i.原创 2022-05-08 20:46:09 · 420 阅读 · 0 评论 -
算法 二叉树 BST树
二叉排序树BST树的定义BST树结构BST树的创建递归中序遍历非递归中序遍历逆向非递归中序遍历删除结点BST树的定义BST树又称为:二叉排序树,二叉搜索树二叉搜索树或者是一颗空树,或者是具有下列性质的二叉树每个结点都有一个作为搜索依据的关键码(key),所有结点的关键码互不相同左子树(如果存在)上所有结点的关键码都小于根节点的关键码右子树(如果存在)上所有结点的关键码都大于根节点的关键码左子树和右子树也是二叉搜索树总结:如果对一颗二叉搜索树进行中序遍历,可以按从小到大的顺序,将各结原创 2022-05-07 18:38:07 · 2216 阅读 · 0 评论 -
算法 二叉树的遍历、查找与判断
二叉树的遍历非递归中序遍历非递归后续遍历非递归先序遍历二叉树层次遍历非递归中序遍历void NiceInOrder(BtNode* ptr) //非递归中序遍历{ if(ptr == nullptr) return; std::stack<BtNode*> st; while (ptr != nullptr || !st.empty()) { while (ptr != NULL) { st.push(ptr); ptr = ptr->leftchild原创 2022-05-06 17:33:16 · 536 阅读 · 0 评论 -
算法 二叉树
二叉树树的定义二叉树的概念二叉树的定义:二叉树的性质:存储表示代码实现结构定义遍历方式二叉树创建树的定义树是由n(n>=0)个结点组成的有限集合,如果n = 0,成为空树,如果n > 0,则有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱除根以外的其他结点划分为m(m >= 0)个互不相交的有集合T0,T1,…,Tm-1,每个集合又是一棵树,并且称之为根的子树,每棵子树的根节点有且仅有一个直接前驱,但可以有0个或多个直接后继结点的度:一个节点含有的子原创 2022-05-05 20:00:07 · 839 阅读 · 2 评论 -
算法 动态规划 01背包问题
01背包问题分析代码实现从前往后拿,递归实现非递归实现非递归实现,自上向下填充允接上一文章内容:算法 动态规划: link.问题分析按照普通思维,首先想到应该为贪心算法,也就是计算每个物品重量价值比,将性价比高的物品装入背包,但是这并不是该问题的最优解,因为物品不是可分割的,不能按照重量价值比进行选择这道问题的最优解应该通过动态规划求解,那么其递归方程式为:在这里f(i,j),记为当背包容量为 j,现有 i 物品可拿,所能装进背包的最大价值再者我们举例说明,假设背包总容量为8,现在有四件原创 2022-05-04 15:34:49 · 1311 阅读 · 0 评论 -
算法 动态规划
动态规划介绍以及实践,兔子出生问题原创 2022-04-17 22:23:51 · 407 阅读 · 0 评论 -
算法 分治策略
分治策略寻找最小差值归并排序的非递归实现原创 2022-04-16 11:17:17 · 506 阅读 · 0 评论 -
算法 分治策略与递归
通过对循环修改为递归来分析分治策略,以及分析快排的递归实现与非递归实现原创 2022-02-15 02:18:41 · 523 阅读 · 0 评论