算法复杂度用来表示在解决某个问题时,算法的性能表现。
复杂度上限,就是某个具体的已经实现的算法能够保证在一定时间内解决问题
复杂度下限,就是通过数学方法证明,所有的算法都必须花费一定的时间才能解决问题
最优化算法,就是可能达到的最小复杂度的算法,通常介于复杂度上限和下限之间
比如排序问题中:
计算模型为决策树
使用比较次数作为开销...
分类:
其他好文 时间:
2014-06-08 18:20:02
阅读次数:
190
/** * 最大子数组的暴力求解算法,复杂度为o(n2) * @param n * @return
*/ static MaxSubarray findMaxSubarraySlower(int[] n) { long tempSum = 0; int
left = 0; int right = 0...
分类:
其他好文 时间:
2014-06-07 21:07:50
阅读次数:
250
一、时间复杂度 1、时间频度 T(n),n为问题的规模
即--算法中语句的执行次数。又叫语句频度。 2、时间复杂度 记作 O( f(n) ),这里的f(n)是一个T(n)的同数量级函数。
如O(1)表示算法的语句执行次数为一个常数,不随规模n的增长而增长; 又如T(n)...
分类:
其他好文 时间:
2014-06-05 17:00:31
阅读次数:
218
本节主要讲解的是算法的复杂度。
算法性能
算法的性能分为三种:
最佳情况:计算时间最短的情况
最差情况:计算时间最长的情况
平均情况:随机输入的期望开销
以二分查找为例
最佳情况是1,因为第一次就有可能找到需要找的整数。
最差情况是logN
平均情况是logN
算法复杂度
...
分类:
其他好文 时间:
2014-06-01 15:57:46
阅读次数:
220
算法基本概念:算法:用来对数据的操作作描述,是对问题求解的步骤的描述。是一系列将输入转为输出的计算步骤算法复杂度:分为时间复杂度和空间复杂度时间复杂度:算法中所有语句的频度之和用T(n)表示,记为T(n)
= O(n)常见时间复杂度递增次序:常数 O(1) , 对数阶O(log2^n) , 线性阶O...
分类:
其他好文 时间:
2014-05-22 14:23:34
阅读次数:
212
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,分析算法复杂度当时答的时候用的方法太渣了,思路是每次左移一位,移动K次。12345678→23456781→34567812→45678123这是我写...
分类:
其他好文 时间:
2014-05-08 07:06:24
阅读次数:
300
算法设计中经常会用到递归,利用递归式的方法可以清晰地显示算法的整个过程,而对于分析算法的复杂度,解递归式就有了用处,这里的方法来自于《算法导论》。
1. 代换法
代换法只能用于解那种很容易猜的情形,它可用来确定一个递归式的“O”和“Ω”界。
举例,确定递归式 T(n) = 2*T(└n/2┘) + n 的一个“O”界
1.1 先猜测有某个界存在
由于这个递归式与合并排序的计算...
分类:
其他好文 时间:
2014-05-07 16:07:15
阅读次数:
413
这道题看似简单,其实很坑爹啊,动不动就是Time Limit Exceeded,
比如我下面这段TLE的代码,我感觉方法是对的,但是too
naive,算法复杂度到了O(N^2),自然就TLE了而且有一些小语法错误需要注意:for(runner=current+1;;)不能用>;一定所有的case都...
分类:
其他好文 时间:
2014-05-06 11:31:09
阅读次数:
405
序
算法的复杂性体现在运行该算法时所需的计算机资源多少,而计算机资源最重要的是时间和空间。算法复杂度分为时间复杂度和空间复杂度。
一个高级语言编写的程序在计算机上运行所消耗的时间取决于下列因素: 1、算法采用的策略、方案 2、编译产生的代码质量 3、问题的输入规模 4、机器执行指令的速度
抛开与计算...
分类:
其他好文 时间:
2014-05-01 13:54:35
阅读次数:
377
算法复杂度 分为时间复杂度和空间复杂度。其作用:
时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。 时间复杂度1.时间频度
一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能 知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的....
分类:
其他好文 时间:
2014-05-01 12:15:55
阅读次数:
335