摘要: * 消除递归: * 一个算法作为一个递归的方法通常从概念上很容易理解,但实际使用中递归的效率不高,在这种 * 情况下,把递归算法转换成非递归的算法是非常有用的,这种转换经常用到栈。 * * 递归和栈: * 递归和栈之间有着紧密的联系,大部分的编译器使用栈实现递归的。 * * 调用方法的时候发生什么: * 1. 编译器会把这个方法所有当前参数及返回地址压入栈中; * 2. 将控制权交给这个方法,方法通过获得栈顶元素值访问参数; * 3. 方法运行结束的时候,值退栈,参数消失且控制权重新回到返回地址; 阅读全文
posted @ 2009-01-24 21:31 小白熊 阅读(188) 评论(0) 推荐(0) 编辑
摘要: * 概念介绍: * * 归并排序:归并算法的中心是归并两个已经有序的数组,并且递归调用归并操作。 * * 归并排序优点和缺点:比简单排序在速度上快很多;归并排序会占用双倍的存储空间。 * * 归并排序的效率:归并排序的时间复杂度是 O(N*LogN);简单排序的复杂度是O(N2)。 阅读全文
posted @ 2009-01-24 21:30 小白熊 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 递归的效率:调用一个方法会有一定的代价和开销。首先,控制必须须从当前位置转移到调用 * 方法的开始处。其次,传给这个方法的参数以及这个方法返回地址都要初压到一 * 个栈里,为的是方法能够访问参数以及知道返回值在存储在哪里,这个过程也称 * "保存现场"。递归方法的使用的本质是从概念上简化了问题,而不是因为它更有 * 效率。当使用递归的效率很低的时候,就可以考虑如果把递归转化成非递归。 阅读全文
posted @ 2009-01-24 21:26 小白熊 阅读(232) 评论(0) 推荐(0) 编辑