编程语言
首页 > 编程语言> > 数据结构与算法基础------计算时间复杂度

数据结构与算法基础------计算时间复杂度

作者:互联网

算法效率从以下两个方面考虑:

  1. 时间效率:指的是算法所耗费的时间
  2. 空间效率:指的是算法执行过程中所耗费的存储空间

时间 效率和空间效率有时候是矛盾的。
在这里我们只讨论事前分析法,因为事后分析法也和计算机的软硬件等其他客观条件有关。
事前分析法
一个算法的运行时间大致等于计算机执行一种简单操作(如赋值,比较,移动等)所需的时间与算法中进行的简单操作的次数的乘积
以矩阵为例:

for(i=1;i<=n;i++)		//n+1次
	for(j=1;j<=n;j++)	//n*(n+1)次
	{
		c[i][j]=0;		//n*n次
		for(k=0;k<=n;k++)	//n*n*(n+1)次
			c[i][j]=c[i][j]+a[i][k]*b[k][j];//n*n*n次
	}

那么上述算法所消耗的时间是该算法中每条语句的执行次数之和,则消耗的时间T(n)=2n3 +3n2 +2n+1。
为了便于比较不同算法的时间效率,我们仅比较他们的数量级。


分析算法时间复杂度的方法:

时间复杂度是由嵌套最深层语句的频度决定的。
例:

void exam(float x[][],int m,int n)
{
	float sum[];
	for(int i=0;i<m;i++)
	{
		sum[i]=0.0;
		for(int j=0;j<n;j++)
			sum[i]+=x[i][j];//嵌套最深层
	}

例题:

i=1;	
while(i<=n)
	i=i*2;

设执行次数为x
2x <=n
x<=log2n
则执行次数最大为log2n ,T(n)=O(log2n )

柳叶lhy 发布了14 篇原创文章 · 获赞 0 · 访问量 278 私信 关注

标签:语句,复杂度,算法,时间,数量级,数据结构,效率
来源: https://blog.csdn.net/lhyhaiyan/article/details/104564074