随笔分类 - 数据结构与算法
摘要:[代码]二分查找是典型的分治法的应用,要求待查序列排好序,这里都按照从小到大排列处理,查找时间代价o(log(n)).思路和中间的数字比较,如果相等则找到,如果<则在左边找,如果>则在右边找。分治及许多计算机算法的核心就是将问题设法转化为相同的形式问题而规模减小,即子问题。能够找到规模减小的子问题,意味着问题的解决。注意分治不一定非要递归,如果每次只走一个分支,那么循环的写法也非常简单...
阅读全文
摘要:刚刚实现一个初始版本1.TODO 仅仅能处理英文,下一步考虑unicode 似乎考虑多了,当前的程序处理中文文本是一样可以的。2.TODO enocde ,decode,文本读写多重转换 int -> chr chr -> int -> bin下一步直接读写int,能否直接读写bit?3.TODO 其它方面考虑速度的优化,比如垃圾回收机制是否影响了速度等等, 和c/c++比pyt...
阅读全文
摘要:/Files/rocketfan/editdistance_readme.pdf先给一个例子,两个字符串eeba和abca相似度是多少呢,edit distance是一个很好的度量,定义从字符串a变到字符串b,所需要的最少的操作步骤(插入,删除,更改)为两个字符串之间的编辑距离。对于eeba,abca它们之间的编辑距离为3,可以按照上面的操作步骤(不是唯一的)将eeba变到abca,1.将e变为a...
阅读全文
摘要:当前算法都未考虑多个优先级的问题,仅仅考虑+,-,*,/与()//expression.h[代码]//expression.cc[代码]
阅读全文
摘要:一般都是将节点数据类型作为二叉树模板的参数,这里尝试使用将节点类型直接作为二叉树的模板参数,例如一棵二叉树可以装配普通的二叉树节点,也可以装配带有父指针的三叉链表节点,或者装配线索二叉树节点。只是作为尝试,其实也许直接定义三叉链表二叉树,线索二叉树的设计更好。另外尝试了使用triats手法,以及提出基类进行模板特化private BinaryTreeHelper<U,T>,因为函数不能...
阅读全文
摘要:求二叉树高度的变形,最大距离是两个子树的高度(定义一个空节点高度为-1,一个左右子树都为空的节点高度为0)之和+2 或者就是子问题左子树的max distance 或者是右子树的maxdistance。实际处理时只需要有一个全局变量,记录下当前的maxdistance,利用后序遍历,当访问根节点时,左右子树的中较大的max distance已经记录在该全局变量中,如果 left depth + r...
阅读全文
摘要:最近复习数据结构,练习了一些二叉树算法,其中如果能够将二叉树直观显示出来能够很好的检测算法的正确性。写了控制台字符显示,以及图形界面显示二叉树的程序,都比较粗糙,有时间再改进吧,还是能用的,呵呵。另外代码都是用C++写的,以前用过MFC做界面,但是感觉实在不爽,不喜欢非控制台程序,不喜欢windows,只喜欢简洁的东西,于是考虑使用PYTON,用PYQT,刚弄懂了点皮毛,不过写小程序足够了,感觉很...
阅读全文
摘要:Ackerman 函数的解法 1.定义 ack(m,n) = n+1 m = 0 ack(m,n) = ack(m-1,1) m!=0 n = 0 ack(m,n) = ack(m-1,ack(m,n-1)) m!=0 n!=0 2.示例 ack(3,0) = (2,1) ...
阅读全文

浙公网安备 33010602011771号