- 浏览: 3558055 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
求解算法的时间复杂度的具体步骤是:
⑴ 找出算法中的基本语句;
算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
⑵ 计算基本语句的执行次数的数量级;
只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
⑶ 用大Ο记号表示算法的时间性能。
将基本语句执行次数的数量级放入大Ο记号中。
如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:
for (i=1; i<=n; i++)
x++;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
x++;
第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。
常见的算法时间复杂度由小到大依次为:
Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2n)和Ο(n!)称为指数时间。计算机科学家普遍认为前者是有效算法,把这类问题称为P类问题,而把后者称为NP问题。
O(1)
Temp=i;i=j;j=temp;
以上三条单个语句的频度均为1,该程序段的执行时间是一个与问题规模n无关的常数。算法的时间复杂度为常数阶,记作T(n)=O(1)。如果算法的执行时 间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
O(n^2)
2.1. 交换i和j的内容
sum=0; (一次)
for(i=1;i<=n;i++) (n次 )
for(j=1;j<=n;j++) (n^2次 )
sum++; (n^2次 )
解:T(n)=2n^2+n+1 =O(n^2)
2.2.
for (i=1;i<n;i++)
{
y=y+1; ①
for (j=0;j<=(2*n);j++)
x++; ②
}
解: 语句1的频度是n-1
语句2的频度是(n-1)*(2n+1)=2n^2-n-1
f(n)=2n^2-n-1+(n-1)=2n^2-2
该程序的时间复杂度T(n)=O(n^2).
O(n)
2.3.
a=0;
b=1; ①
for (i=1;i<=n;i++) ②
{
s=a+b; ③
b=a; ④
a=s; ⑤
}
解: 语句1的频度:2,
语句2的频度: n,
语句3的频度: n-1,
语句4的频度:n-1,
语句5的频度:n-1,
T(n)=2+n+3(n-1)=4n-1=O(n).
O(logn )
2.4.
i=1; ①
while (i<=n)
i=i*2; ②
解: 语句1的频度是1,
设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=logn
取最大值f(n)= logn,
T(n)=O(logn )
O(n^3)
2.5.
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
{
for(k=0;k<j;k++)
x=x+2;
}
}
解:当i=m, j=k的时候,内层循环的次数为k当i=m时, j 可以取 0,1,...,m-1 , 所以这里最内循环共进行了0+1+...+m-1=(m-1)m/2次所以,i从0取到n, 则循环共进行了: 0+(1-1)*1/2+...+(n-1)n/2=n(n+1)(n-1)/6所以时间复杂度为O(n^3).
发表评论
-
java 回溯法求解 8皇后问题
2012-02-14 07:51 4486package endual; public cl ... -
算法设计与分析_回溯法分析
2012-02-12 09:53 2386回溯法 有通用的解题 ... -
经典而简单的贪心算法
2012-02-10 18:23 2023package endual; public cl ... -
贪心算法的一些感悟
2012-02-10 15:42 2408每一个贪心算法的背后 ... -
java排序算法的实现(转载)
2012-01-31 23:12 1480插入排序: package org.rut. ... -
计算时间和空间复杂度
2012-02-02 13:37 1752计算时间和空间复杂度 分类: C++学习 2 ... -
java 实现二叉树
2012-01-25 21:13 1464在计算机科学中,树是一种非常重要的数据结构,而且有非常广泛的应 ... -
java实现队列
2012-01-25 21:10 1560队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用, ... -
java 栈(面试够了的)
2012-01-25 21:07 1570package endual;public class Sta ... -
java 栈的实现
2012-01-25 20:38 1411栈可以说是一种特殊的链表,它的主要特点是先进后出,是一种重要的 ... -
常用的排序算法的时间复杂度和空间复杂度
2012-01-24 23:03 2481常用的排序算法的时间复杂度和空间复杂度 分类: 笔试面试题 ... -
时间复杂度和空间复杂度
2012-01-24 22:18 1980同一问题可用不同 ... -
时间复杂度和空间复杂度
2012-01-24 22:17 1996时间复杂度和空间复杂度 分类: Algorithm 2008 ... -
海量数据算法笔试题
2012-01-21 01:58 1587海量数据算法笔 ... -
[转]大数据量,海量数据 处理方法总结
2012-01-21 01:57 1219[转]大数据量,海量数据 处理方法总 ... -
时间复杂度的计算
2012-01-17 22:54 1362算法复杂度是在《数据 ... -
算法分类(按照效率降序排列)
2011-09-13 21:09 16671.常数级、 2.对数级 3.次线性级 4.线性级 5 ...
相关推荐
根据给定文件的信息,我们可以详细地探讨“算法时间复杂度”的相关知识点。时间复杂度是衡量算法运行时间随输入规模增长而变化的函数,它在计算机科学与编程领域扮演着至关重要的角色。接下来,我们将围绕以下几个...
### 算法时间复杂度分析中递归方程求解方法综述 #### 引言 在计算机科学领域,递归是一种常见的编程思想和技术,它不仅被广泛应用于各种算法的设计之中,也是评估算法效率的重要工具之一。递归方程在算法的时间...
在时间复杂度方面,BFS和DFS都是O(V+E),其中V是节点数量,E是边的数量。这是因为这两种算法都需要遍历所有的节点和边。然而,实际运行效率上,由于BFS使用队列,通常比DFS(使用栈)更稳定,因为DFS可能会陷入深度...
本文档主要介绍了如何计算算法的时间复杂度,并通过一个具体的例子进行了详细的解析。 首先,时间复杂度的定义是基于算法中基本操作的执行次数与问题规模 n 的关系。基本操作是指算法中执行频率最高的那些语句。当 ...
最坏情况下的时间复杂度是指算法求解输入规模为 n 的实例所需要的最长时间。平均情况下的时间复杂度是指算法对同样规模 n 的输入实例所需要的平均时间。 算法的基本运算是指算法中最基本的操作,例如比较、加法、...
### 知识点总结:《算法与复杂度...通过上述章节和核心概念的介绍,《算法与复杂度》不仅为读者提供了算法设计的基础知识,还深入探讨了算法的复杂度评估及其在具体问题中的应用,是一本非常有价值的计算机科学参考书。
### 概率算法——降低算法复杂度 #### 一、概率算法的概念与优势 概率算法是一种在执行过程中引入随机性的算法。与确定性算法不同,概率算法中的某些步骤是不确定的,即它们依赖于随机选择。这种随机选择往往能够...
通过引入二次松弛差集和优化求解步骤,它显著降低了算法的复杂度,提升了系统的并发性能。对于从事分布式系统开发的工程师和研究人员来说,这是一份有价值的参考文献,可以指导他们在设计和实现分布式系统时,如何...
时间复杂度是衡量算法效率的一种方式,它描述了算法运行时间与输入数据量之间的关系。主要关注最坏情况下的时间复杂度,因为它给出了算法性能的上限。大O符号(O)用来表示算法运行时间的增长速率。 **常见的时间...
时间复杂度的求解方法通常包括以下几个步骤: 1. **分析算法**:仔细观察算法的每一步,确定每一步与输入数据 n 的关系。 2. **计数操作次数**:统计在最坏情况下,算法会执行的基本操作次数。 3. **忽略低阶项和...
- **有限性**: 算法的步骤数量是有限的,并且每个步骤的执行时间也有限。 此外,还对比了**程序**与**算法**之间的区别:程序是对算法的一种具体实现,它可以通过某种编程语言来编写。值得注意的是,程序并不一定...
3. 分治策略:掌握分治法的设计思想、求解步骤、掌握用分治法解题的算法框架。 4. matplotlib 模块:使用 matplotlib 模块画出操作时间和数据规模的关系图。 5. turtle 模块:使用 turtle 模块实现递归可视化。 ...
这些函数包括但不限于问题的建模、求解器的选择、问题的求解以及结果的后处理等步骤。CVX支持多种求解器,如MOSEK、SDPT3等,可以根据问题的类型和规模自动选择最合适的求解策略。 使用CVX时,你需要遵循一定的规则...
区间并集求解算法java实现 区间并集求解算法是解决有限闭区间的并集问题,这是计算机科学和数学领域的重要问题。在实际应用中,例如邮政发票系统中,需要计算用户共打印了多少条发票,这可以抽象为数学上计算区间的...
在压缩包文件中,“蜣螂优化算法.pdf”很可能是一篇详细描述该算法原理、实现方法以及应用案例的研究论文,可以帮助读者深入理解算法的细节和应用。而“发行版”可能包含了算法的源代码或者软件包,可供研究者和...
在分析时间复杂度时,我们可以看到,无论是递归还是非递归算法,俄式乘法的时间复杂度都是O(n),其中n为输入数字的位数。这是因为每一步都需要处理n位数字。这比传统的乘法算法(如学校教的竖式乘法)的O(n^2)时间...
具体来说,FFT算法分为以下步骤: 1. **分治策略**:将n个数据点的DFT分解为两个大小为n/2的DFT,分别处理实部和虚部。 2. **蝶形运算**:利用复共轭对称性,通过简单的复数乘法和加法操作(称为蝶形运算),将两个...
通过求解递推关系,可以推导出算法的时间复杂度或者找出算法的具体执行步骤。 在实际应用中,分析算法的时间复杂度时,会区分最好情况、平均情况和最坏情况时间复杂度。最好情况是算法在理想输入下表现出来的效率,...