- 博客(17)
- 收藏
- 关注
原创 平衡二叉树的插入&删除:
平衡二叉树的插入操作:插入新结点后,要保持二叉排序树的特性不变(左 < 根 < 右)若插入新结点导致不平衡,则需要调整平衡(LL,RR,LR,RL)平衡二叉树的删除操作:删除一个结点后,要保持二叉排序树的特性不变 (左 < 根 < 右)若插入新结点导致不平衡,则需要调整平衡1、删除结点2、向上查找最小不平衡子树,找不到则没有异常3、在最小不平衡树中,查找平衡因子最高的分支结点,和分支节点的分支结点4、根据分支节点的分支结点调整平衡(LL,RR,LR,RL)
2024-06-26 01:08:48
1666
原创 王道数据结构 查找的概念:
左子树结点值 < 根结点值 < 右子树结点值:左右子树又是一颗二叉排序树:中序遍历时增序代码实现部分:递归代码实现:二叉排序树的插入:(递归实现 空间复杂度 O(h))用循环方式来删除效果更好二叉排序树的删除:二叉排序树用删除结点的直接后继来替代:单前结点的右子树最小的结点(一定没有左子树)来替换删除结点这样就转换为第一种或第二种情况,把替换删除结点位置结点空出的位置左子树接替上去二叉排序树用删除节点的直接前驱来替代:查找效率分析:使树的高度最小树的长度最小:平衡二叉树。
2024-05-20 14:48:31
1000
1
原创 图的算法:
检测所有邻结自 Vi的顶点,若其 final的值为 false,则更新 dist和 path的信息(邻结点未找到最短路径的节点,根据此节点的权值加上至起始节点 V0的权值总和是否少于 dist[]记录最短路径的值,则更新 dist的值和 path至此结点的前驱结点)Dijkstra算法局限:不适用于负权值的带权图(Dijkstra算法无法处理带有负权值的边的图。path[]路径上的前驱:每个顶点在最短路径上的直接前驱(目前找到最好的路径结点)Floyd算法的局限是:有不能处理带负权回路的图。
2024-03-07 21:32:35
680
1
原创 数据结构 --置换选择排序
4、当内存工作区WA中的可容纳记录都标红则,进入下一个归并段,继续将内存工作区WA全部标红的变为正常进行排序。最后得到三个归并段,当得到的归并段越少则读取磁盘次数越少,效率越好。3、当内存工作区WA中值小于 MINMAX则标红。2、MINMAX = 当前归并段内存最大的值。1、置换内存工作区WA最小的数据。
2023-08-03 09:52:43
328
原创 C++ 智能指针 shared_ptr、unique_ptr、weak_ptr
weak_ptr是为了配合shared_ptr而引入的一种智能指针,因为它不具有普通指针的行为,没有重载operator*和->,它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使用情况。使用weak_ptr的成员函数use_count()可以观测资源的引用计数,另一个成员函数expired()的功能等价于use_count()==0,但更快,表示被观测的资源 (也就是shared_ptr的管理的资源)已经不复存在。//放弃指针的控制权,返回裸指针,并将unique_ptr自身置为空。
2023-05-25 23:23:43
437
1
原创 C++之容器 string、deque、set、map、list(multi)
迭代器和 vector一样函数声明接口说明1、begin返回第一个元素的迭代器2、end返回最后一个元素下一个位置的迭代器3、rbegin返回第一个元素的reverse_iterator,即end位置4、rend返回最后一个元素下一个位置的reverse_iterator,即begin位置1、multiset是按照特定顺序存储元素的容器,其中元素是可以重复的。
2023-05-25 08:01:28
459
1
原创 Opencv基于图形相关接口调用,识别图形反馈图标所在位置
结果仍然是单通道图像,更易于分析。bitwise_and 函数需要设定三个参数,其中 src1 指第一个数组(源图像),src2 指第二个数组(源图像),mask= 用于指定具体的掩模(常以 0 和 1 元素为主,用以输出具体的元素),应设为 uint8 格式,即单通道的 8-bit 的数组。算法通俗理解:腐蚀算法使二值图像缩小一圈,删除对象边界的某些像素,其运算过程就是使用用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0。
2023-05-10 18:14:57
503
原创 Opencv对于模式匹配的图像识别
1. Mat类简介Mat类是Opencv中储存图像非常常见的一种数据结构。Mat类可以看做是存放矩阵的容器,他包含了两部分,分别是用来存放图片信息的信息头,和一个指向图片储存矩阵的指针。信息头往往占用空间比较小,而且各个图片之间的信息头是完全独立的。而图片储存矩阵往往占用较大的空间,并且可以多个图片的矩阵指针指向同一个内存空间。2. Mat类的拷贝从Mat类的数据储存结构来看,Mat类图像储存是通过矩阵指针实现的。
2023-05-09 16:18:19
510
原创 python基于 openpyxl对 Excel操作
加载已经存在的表格(不存在则新建):xlsx = openpyxl.Workbook() # 新建一个表格对象if sheetName not in xlsx.sheetName: # 查看 表格 sheetName 是否存在sheet表集合中xlsx.create_sheet(sheetName) # 创建表格 sheetName获取 sheet表格对象:xlsx[sheetName]
2023-05-09 07:28:35
1795
原创 Python常用操作-没学也要会
yes exec if (执行条件)else not exec。pip install package 安装包。pip show package 查看包及路径。
2023-05-08 08:09:13
100
1
原创 C++重载、重写、覆盖
函数重载:在作用域中,函数名同名,函数参数顺序类型个数不同时构成重载使用const 修饰也可以构成重载,使用默认参数时要注意调用时避免与其他函数存在二异性1)函数返回值与构成函数重载无任何关系2)类的静态成员函数与普通成员函数可以形成重载3)函数重载发生在同一作用域中,如类成员函数之间的重载、全局函数之间的重载4)基类函数必须有 virtual 关键字,不能有 static,大概是多态的原因函数重写:在派生类中对基类成员函数的返回值类型、函数名、参数列表相同的函数重新定义,也
2022-05-21 20:57:43
1692
原创 C++继承方式
C++继承分为,公有(public)、保护(protected),私有(private)三种继承方式,公有继承:基类共有成员(函数、属性)、保护成员在派生类中依旧为共有成员、保护成员;基类私有成员物理上在派生类中继承了,不过不能通过派生类对象(指针、引用)访问,只能通过基类中公有函数来间接访问基类私有成员。保护继承:基类共有成员(函数、属性)、保护成员在派生类中均为在派生类中“”保护成员,私有成员在“派生类中不可见”,可通过基类共有函数间接访问。私有继承:基类公有、保护、私有在派生类中均“不可见
2022-05-20 14:30:05
1147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅