自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Immorwave

所谓热情也好、天赋也罢,请用结果说话

  • 博客(20)
  • 收藏
  • 关注

原创 散列表——理论

参考本书,第一遍看完对证明以及一些结论完全是一脸懵逼,于是又参考了《算法导论》,自己整理了一下知识:(对比两本书,明白两点,一、看英文定义才是王道; 二、没有那个智商就不要有那么强的求知欲)散列表( hash table):特点:··不需要序的信息(这也是个缺点啊);·对输入数据是否有序持怀疑,数组可代替AVL树;·实际存储的关键字数组比全部的可

2017-09-16 15:35:40 576

转载 二叉查找树——懒惰删除

由于学习树这一章节,查阅了很多资料,网上书上代码上,自己的别人的已然分不开了,如有侵权请留言,如同意我记录于此,也请留言区留下大名,必然感谢!此篇参考 ----》》》传送门懒惰删除(lazy deletion):当一个元素要被删除时,它仍然留在树中,而是只作了个被删除的标记。·这特别是在有重复项时很流行,因为此时记录出现频率数的域可以减1;·如果树中的实际节点数和“

2017-09-12 14:26:02 2541 3

转载 半可视化打印二叉树

由于学习树这一章节,查阅了很多资料,网上书上代码上,自己的别人的已然分不开了,如有侵权请留言,如同意我记录于此,也请留言区留下大名,必然感谢!大致了解了二叉树,那么总是那样 各种顺序的输出,我看着不舒服,也不直观,于是在网上找到了如下代码,该算法 从上至下,打印右子树,根节点,左子树函数outputTree(BinaryNode * t, bool left, const

2017-09-11 21:49:22 857

原创 倒序打印单链表

书中有一问题:编写倒序打印单链表的算法,只是用常数的附加空间。本题意味着,不能使用递归但可以假设该算法是表的一个成员函数。通读题目,可以知道题目告诉我们,用递归可以完成;或者借助附加空间,那么借助栈可以完成;借助常数的附加空间,那么就需要一个固定的大小去完成,给他三个指针,去反转链表吧。ps:实验结果基于之前自己实现的 简易List (是双链表且含有初始化data=0的头尾节点,不过不

2017-09-03 22:08:11 682

原创 后缀转中缀

兄弟篇 中缀转后缀 + 后缀计算后缀转中缀: eg:   652 3+8*+3+*   >>> 6*((5+(2+3)*8)+3)实现:·读入表达式,若是数字压入栈;·若是运算符,则弹出栈顶的两个元素a、b进行 b operator a,后再压入栈中即可;·循环至最后,返回栈顶元素,即为所需要的后缀表达式。

2017-09-02 21:04:01 2966 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 741

原创 栈应用——中缀转后缀+后缀计算

中缀表达式(infix expression)即  平时生活中大家对于算式的书写格式( eg: 6*((5+(2+3)*8)+3)  );后缀表达式(post expression)即  把数字和运算符分开,把运算符的优先级运算内涵到后缀式的数字和运算符的                                                               顺序中(故

2017-08-15 12:18:53 2252

原创 栈应用——平衡符号

平衡符号用于编译器检查程序的语法错误,每一个右括号( }、]、))必然对应其相应的左括号(eg: [()] 合法;[(])不合法)算法描述:·做一个空栈,读入字符直到文件尾;·如果字符是一个左括号则将其压入栈, 如果字符是一个右括号:如此时栈空,报错;否则,弹出栈顶元素,若与相应的左括号不匹配,报错;·到文件尾,栈非空则报错;算法分析:时

2017-08-15 10:41:40 966

原创 简易List

表——Vector实现  :不易被索引、插入、删除代价低( 已知位置,否则劣在于查找 )、查找低效;这次实现过程错误百出,最后收获满满:·对于嵌套类Node、iterator、const_iterator就在List类内实现吧;·类内的函数实现顺序有时候会让编译器提示出List的对象并没有这个功能,但是运行还是可以的,坑死人啊;·讨论一下*this,以下是我的理

2017-08-13 21:47:31 306

原创 简易Vector

表——Vector实现  :O(1)索引、插入、删除代价高O(N) ( 最后位置除外O(1) )、查找低效;Vector需要内存指针(Object *)和大小(theSize);(注:大小不同于容量,size)个人根据书中的框架实现,注意到如下问题:·需要在单参数构造函数Vector(int initSize=0){}中对于初始大小的元素,初始化为0:for (

2017-08-13 21:29:11 357

原创 求幂

对于求幂,文中给了递归算法,后面题中让给出非递归算法;其实实质就是:——基本情况 n==0,返回1;——如果幂为偶数,那么可以由pow(x,2)得来;——如果幂为奇数,那么可以由pow(x,2)*x得来。递归方法:非常直观,但要注意不要追求那些没用的花哨,刻意的变形还导致了无限循环//递归求幂//O(logN)int pow(int x, int n){ i

2017-08-10 17:24:09 331

原创 素数

关于素数已经是老生常谈,但对于新手的我来说就是新的体验,可能所写不及大牛的十万分之一素数(质数):除了1和它本身以外不再有其他因数,这样的数称为素数。先来素数的判断:(时间复杂度是O(√N),书中说这个是最坏的... )//判断一个数是否是素数void primeNumber(int n){ if (n <= 1) { cout << "no" << endl

2017-08-10 16:26:38 502

原创 最大相连子序列和及相应的下标

关于最大子序列和问题,以前已经解决    点击打开链接但是并没有给出具体序列的那些相应的下标,为此,这次作为补充。我的想法是:记录所求序列的索引,如果thisSum 开始下标begin;从thisSum>maxSum能得出结束下标end,最后从存储可能的开始下标数组中 找到end的最后一次更新的begin即可。代码如下:{CSDN:CODE:25

2017-08-10 16:09:15 876

原创 折半查找零点

本是书后习题 ,难度不大,但在实现时对于语法有值得借鉴的地方,就记录下来:题目:对某个任意的函数f找出方程f(X)=0的一个解,该函数连续的并有两个点low、high使得f(low)和f(high)符号相反,那么在low和high之间即存在一个零点;需要注意的如下:——满足给定的low、high使得f(low)*f(high)——用一个函数作为参数传递我们需要不

2017-08-10 15:51:59 332

原创 最大公因数(gcd)

对于最大公因数(gcd),书中给出两种算法,欧几里得算法和不断递归调用的求解方法:欧几里得算法,其实现原理就是辗转相除法,证明略,实现如下://m>=nint gcd(int m,int n){ while(n!=0){ int rem = m % n; m = n; n = rem; } return m;

2017-08-10 12:52:48 1172

原创 N个正整数随机排列

这次我们要生成前N个正整数的一个随机排列书中给出三种算法如下:前提:需要一个随机数生成函数randInt(begin,end),生成从begin 到 end 的随机数算法一: 依次填入a[0]到a[n-1]的数组a,每次都不断调用随机数函数,直到生成的随机不同于已经生成的a[0],a[1],...a[i-1],然

2017-08-10 12:22:49 2522

原创 最大序列和问题

最大子序列和的问题:就是给出一组数据,求出里面那几个前后连续的数的和最大。书中给出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 540

原创 算法分析(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 591

原创 basic C++ knowledge prepared for data structure (2)

看完第一章,很多用过的东西看见了别人家的用法,很多不知所以然的东西有了看似恍然大悟却又朦朦胧胧1、函数对象 以及巧妙地重载 operator () 来实现一切的调用更像函数调用函数对象(function object),一种考虑到一个对象可以既包含数据又包含成员函数,那么当定义一个没有数据而只有一个函数的类,然后传递该类的一个实例,就可以实现把函数作为参数传递了,只不过是放入一个对象之

2017-07-13 19:28:11 224

原创 basic C++ knowledge prepared for data structure (1)

从今天开始,开始刷数据结构书《数据结构与算法分析——C++语言描述(第四版)》当数据成员含有指针时,默认操作很可能就会不起作用(如指针由某个对象成员函数定址的时候),自己写五大函数,实现深拷贝//五大函数class IntCell{public: explicit IntCell(int initialValue = 0) { p = new int{ in

2017-07-13 19:22:02 261

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除