原文:空间换时间,把递归的时间复杂度降低到O(2n)

递归算法的时间复杂度除非只有前两项,否则都不是线性的,并且相当耗费内存。我们用最常见的的fibonacci数列来说明: 这是一种最常见的写法,这种写法极其耗费内存,当参数n大于 时,就会明显感觉到花的时间比较长,如果n等于 ,浏览器极有可能会崩溃掉。 我们来分析一下耗费内存和时间原因:先将要计算的变量值存到堆栈中,不停地使用栈,保存现场,直到递归结束条件满足时,才从堆栈中取出要计算的变量值,再一 ...

2012-09-05 08:41 10 5848 推荐指数:

查看详情

时间复杂度O(n)

时间复杂度 算法分析 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度空间复杂度来考虑。 一、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知 ...

Thu Oct 11 18:52:00 CST 2018 0 799
单链表的回文判断(O(n)时间复杂度O(1)的空间复杂度)

对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度。 由于空间复杂度的要求,需要就地操作链表,不能开辟多余的空间来进行处理,因此引入快慢指针来进行操作。 快慢指针: slow 和 fast,每次 ...

Thu May 26 19:02:00 CST 2016 0 2087
时间复杂度O(n),空间复杂度O(1)的排序

题目描述: 如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1) 解析: 利用计数排序法,设置一大小为65536的int数组,范围a[0]~a[65535],并初始为0,然后遍历n个数,假设这n个数在数组array[0...n-1]中,则i取值从0到n-1同时执行 ...

Thu Sep 20 18:09:00 CST 2012 0 3253
如何对n个整数数进行排序,要求时间复杂度O(n),空间复杂度O(1)

题目:如何对n个不重复出现的整数序列进行排序,已知这些数的范围为(0-65535),要求时间复杂度O(n),空间复杂度O(1) 分析: 可以申请一个大小为65536的数组A,数组的x下标代表数字x,A[x]代表x 在整数序列中出现的次数。扫描一遍整数序列就可以完成对该整数序列的排序,时间复杂度 ...

Fri Mar 16 03:53:00 CST 2012 2 5944
关于算法的时间复杂度O(f(n))

(一)算法时间复杂度定义:  在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作 ...

Mon Feb 02 19:40:00 CST 2015 1 12148
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM