递推算法:递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。
顺推法:从已知条件出发,逐步推算出要解决的问题的方法。
逆推法:从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条件,即顺推法的逆过程。...
分类:
编程语言 时间:
2014-11-03 20:58:04
阅读次数:
257
优先队列实现事件模拟:http://maozj.iteye.com/blog/676567d堆 左式堆 斜堆:http://blog.csdn.net/yangtrees/article/details/8252760二项队列:http://www.cnblogs.com/xing901022/ar...
分类:
编程语言 时间:
2014-10-31 15:34:39
阅读次数:
134
引论左堆的合并,插入,删除最小的时间复杂度为O(logN)。二项队列就是为了对这些结果进一步提高的一种数据结构。利用二项队列,这三种操作的最坏时间复杂度为O(logN),但是插入的平均时间复杂度为O(1)二项队列二项队列不是一棵树,它是一个森林,由一组堆序的树组成的深林,叫做二项队列。二项队列有几个...
分类:
编程语言 时间:
2014-10-31 15:20:12
阅读次数:
260
什么是数据结构:数据 + 关系关系可分为:集合,线性结构,树结构,图结构或网状结构。存储结构:顺序存储,链式存储,索引存储,散列存储。数据类型:原子类型,结构类型1.算法的时间复杂度2.算法的空间复杂度 2.1 算法本身占用的空间 2.2 算法的运行时占用的空间 2.3 算法运行时临时占用的空间
分类:
编程语言 时间:
2014-10-28 21:30:08
阅读次数:
157
Lists当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还是牺牲了不常用的操作的性能来成全常用功能.本文地址:http://www.cnblogs.com/ar...
分类:
编程语言 时间:
2014-10-22 20:07:14
阅读次数:
284
1.把二元查找树转变成排序的双向链表 ?题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 ?? 10 ?/ \ ?6?14 ?/ \ / \ 4?8 12 16 ?转...
分类:
编程语言 时间:
2014-10-22 16:08:23
阅读次数:
276
动态规划(DP)似乎占据了大部分的编程竞赛题目,乃至三分之一。当然,DP也不是一个学一次就Ok的单一算法。
这还取决于你是否把数据结构与算法放在同一个等级中考虑。如果你想要在编程竞赛中一展风采的话,当然,有些数据结构是你应该熟悉的。其中最重要的有范围树(Range Tree,也被称为线段树或区间树)和树状数组(BITs),也被称作Fenwick树。除此之外,许多DP算法使用了一个前缀和数组(prefix sum array)。
能想到的最精华的单一算法如下所列,排名不分先后。绝大多数非动态规划问题似乎都...
分类:
编程语言 时间:
2014-10-22 15:56:48
阅读次数:
208
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程。算法的效率或复杂度在理论上表示为一个函数。其定义域是输入数据的长度,值域通常是执行步骤数量(时间复杂度)或者存储器位置数量(空间复杂度)。算法分析是...
分类:
编程语言 时间:
2014-10-22 14:12:10
阅读次数:
490
据说这个笔试面试的时候非常easy考到,所以写到这里。图示代码实现/** * 源代码名称:TreeIteratorNoRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历(非递归) * 版权:CopyRight@A2BGeek * 作者:A2BGeek ...
分类:
编程语言 时间:
2014-10-22 12:43:31
阅读次数:
191
前面已经讲过,Python是一种面向对象的编程语言. 面向对象编程语言中最重要的特征是允许程序员创建类建立数据模型来解决问题.我们之前利用抽象数据类型提供的逻辑来描述数据对象 (它的状态) 和功能 (它的方法). 通过构建类来实现抽象数据类型, 一个程序员可以发挥抽象处理的优势,同时提供详细的现实信...
分类:
编程语言 时间:
2014-10-21 16:49:33
阅读次数:
269