![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Immorwave
这个作者很懒,什么都没留下…
展开
-
最大序列和问题
最大子序列和的问题:就是给出一组数据,求出里面那几个前后连续的数的和最大。书中给出4个算法,时间复杂度从O(N^3)降到O(N^2)再降到O(NlogN)最后到O(N),这就是人家跑完程序都走上人生巅峰了,你面对一组数据苍颜白发却还在等待结果...//O(N^3)int maxSubSum1(const vector & a){ int maxSum = 0; for (原创 2017-07-13 19:39:39 · 549 阅读 · 0 评论 -
半可视化打印二叉树
由于学习树这一章节,查阅了很多资料,网上书上代码上,自己的别人的已然分不开了,如有侵权请留言,如同意我记录于此,也请留言区留下大名,必然感谢!大致了解了二叉树,那么总是那样 各种顺序的输出,我看着不舒服,也不直观,于是在网上找到了如下代码,该算法 从上至下,打印右子树,根节点,左子树函数outputTree(BinaryNode * t, bool left, const转载 2017-09-11 21:49:22 · 871 阅读 · 0 评论 -
后缀转中缀
兄弟篇 中缀转后缀 + 后缀计算后缀转中缀: eg: 652 3+8*+3+* >>> 6*((5+(2+3)*8)+3)实现:·读入表达式,若是数字压入栈;·若是运算符,则弹出栈顶的两个元素a、b进行 b operator a,后再压入栈中即可;·循环至最后,返回栈顶元素,即为所需要的后缀表达式。原创 2017-09-02 21:04:01 · 2985 阅读 · 1 评论 -
约瑟夫问题(Josephus problem)
问题概述:非原装正版问题,但是道理还是那个道理N个人编号1~N,围坐成一个圆圈。从1号人开始传递一个热土豆,经过M次传递后那这热土豆的人被清除离座,由坐在后面的人拿起热土豆继续进行游戏。最后剩下的人获胜。ex: M=0,N=5 清除顺序:1->2->3->4->5 ; M=1,N=5 清除顺序:2->4->1->5->3;注意的是:这个问题描述和网上的部分问题描述不一致,在原创 2017-09-02 12:21:49 · 768 阅读 · 0 评论 -
散列表——理论
参考本书,第一遍看完对证明以及一些结论完全是一脸懵逼,于是又参考了《算法导论》,自己整理了一下知识:(对比两本书,明白两点,一、看英文定义才是王道; 二、没有那个智商就不要有那么强的求知欲)散列表( hash table):特点:··不需要序的信息(这也是个缺点啊);·对输入数据是否有序持怀疑,数组可代替AVL树;·实际存储的关键字数组比全部的可原创 2017-09-16 15:35:40 · 582 阅读 · 0 评论 -
倒序打印单链表
书中有一问题:编写倒序打印单链表的算法,只是用常数的附加空间。本题意味着,不能使用递归但可以假设该算法是表的一个成员函数。通读题目,可以知道题目告诉我们,用递归可以完成;或者借助附加空间,那么借助栈可以完成;借助常数的附加空间,那么就需要一个固定的大小去完成,给他三个指针,去反转链表吧。ps:实验结果基于之前自己实现的 简易List (是双链表且含有初始化data=0的头尾节点,不过不原创 2017-09-03 22:08:11 · 691 阅读 · 0 评论 -
栈应用——中缀转后缀+后缀计算
中缀表达式(infix expression)即 平时生活中大家对于算式的书写格式( eg: 6*((5+(2+3)*8)+3) );后缀表达式(post expression)即 把数字和运算符分开,把运算符的优先级运算内涵到后缀式的数字和运算符的 顺序中(故原创 2017-08-15 12:18:53 · 2261 阅读 · 0 评论 -
栈应用——平衡符号
平衡符号用于编译器检查程序的语法错误,每一个右括号( }、]、))必然对应其相应的左括号(eg: [()] 合法;[(])不合法)算法描述:·做一个空栈,读入字符直到文件尾;·如果字符是一个左括号则将其压入栈, 如果字符是一个右括号:如此时栈空,报错;否则,弹出栈顶元素,若与相应的左括号不匹配,报错;·到文件尾,栈非空则报错;算法分析:时原创 2017-08-15 10:41:40 · 996 阅读 · 0 评论 -
简易List
表——Vector实现 :不易被索引、插入、删除代价低( 已知位置,否则劣在于查找 )、查找低效;这次实现过程错误百出,最后收获满满:·对于嵌套类Node、iterator、const_iterator就在List类内实现吧;·类内的函数实现顺序有时候会让编译器提示出List的对象并没有这个功能,但是运行还是可以的,坑死人啊;·讨论一下*this,以下是我的理原创 2017-08-13 21:47:31 · 315 阅读 · 0 评论 -
简易Vector
表——Vector实现 :O(1)索引、插入、删除代价高O(N) ( 最后位置除外O(1) )、查找低效;Vector需要内存指针(Object *)和大小(theSize);(注:大小不同于容量,size)个人根据书中的框架实现,注意到如下问题:·需要在单参数构造函数Vector(int initSize=0){}中对于初始大小的元素,初始化为0:for (原创 2017-08-13 21:29:11 · 370 阅读 · 0 评论 -
最大相连子序列和及相应的下标
关于最大子序列和问题,以前已经解决 点击打开链接但是并没有给出具体序列的那些相应的下标,为此,这次作为补充。我的想法是:记录所求序列的索引,如果thisSum 开始下标begin;从thisSum>maxSum能得出结束下标end,最后从存储可能的开始下标数组中 找到end的最后一次更新的begin即可。代码如下:{CSDN:CODE:25原创 2017-08-10 16:09:15 · 883 阅读 · 0 评论 -
算法分析(Algorithm Analysis)
看了不同的算法才感觉人与人之间的差距怎么就那么大,不哔哔了(白天已吐槽无数次)今天主要的就是:基础的时间复杂度和自己的一些探索时间复杂度:存在c,n0,N>=n0时T(N)T(N)>=cg(N) T(N)=Ω(f(N)) 2 1&&2 T(N)=Θ(f(N))T(N)相关法则:1、T1(N)+T2(N) = O(f(N) +g(N))原创 2017-07-13 19:33:26 · 604 阅读 · 0 评论 -
二叉查找树——懒惰删除
由于学习树这一章节,查阅了很多资料,网上书上代码上,自己的别人的已然分不开了,如有侵权请留言,如同意我记录于此,也请留言区留下大名,必然感谢!此篇参考 ----》》》传送门懒惰删除(lazy deletion):当一个元素要被删除时,它仍然留在树中,而是只作了个被删除的标记。·这特别是在有重复项时很流行,因为此时记录出现频率数的域可以减1;·如果树中的实际节点数和“转载 2017-09-12 14:26:02 · 2597 阅读 · 3 评论