数据结构(二)时间复杂度概念

数据结构(二)时间复杂度概念
作者:秋名
撰写时间:2020 年 6 月 10 日
算法就是计算机解题的过程

		用高斯求和的方法。这是一个等差数列,公式是du:(首项+末项)×项数zhi÷2
		则原dao式=1+100)×100÷2
		=101×100÷2
		=10100÷2
		=5050

##时间复杂度(Time Complexity)定义
##时间频度(数据结构频度指的是执行的次数,时间频度指的是执行的时间)

##时间复杂度


##时间复杂度计算

##时间复杂度举例
n代表数据的个数,时间复杂度中描述的是n趋近于无穷的情况。
O(1) 表示消耗的时间与数据的规模是没有关系的。
O(n) 说明这个算法的运行时间与数据的个数(n)呈线性关系

1、一个简单语句的时间复杂度为O(1)
	int count = 0;
时间复杂度:T(n)=O(1)
2100个简单语句的时间复杂度也为O(1)  //100是常数,不是趋向无穷大的n
	int count = 0;
时间公式:T(n)=1
时间复杂度:T(n)=O(1)

3、一个循环的时间复杂度为O(n)
	int n=8;count=0;
	for(int i=1;i<=n;i++)
	count++;  //基础语句

时间公式:T(n)=n;
时间复杂度:T(n)=O(n);

4、时间复杂度为O(log2n)的循环语句。
	int n=8;count=0;
	for(int i=1;i<n;i*=2)
	count++;

1 2 4 8 16 32
2^30=1024*1024*1024=1000*1000*1000=10亿

5、时间复杂度为O(n2)的二重循环。
int n=8,count=0;
for(int i=1;i<=100n;i++)//100n是常数n,结果==n
	for(int j=1;j<=10n;j++)//10n是常数n,结果==n
	count++;
	
时间公式:T(n)=100n*10n=1000n*n;
时间复杂度:T(n)=O(n*n);

6、时间复杂度为O(nlog2n)的二重循环。
int n=8,count=0;
for(int i=1;i<=n;i*=2)
	for(int j=1;j<=n;j++)
	count++;
	
n*log2n


7、时间复杂度为O(n2)的二重循环
int n=8,count=0;
for(int i=1;i<=n;i++)
	for(int j=1;j<=i;j++)//j<=i
	count++;
	
1+2+3+4....+n=时间频度:(1+n)*n/2
时间复杂度:T(n)=O(n2)
图解:

常用的时间复杂度级别:(尽量控制在立方阶以上,以下执行效率低)
常数阶O(1)
对数阶O(log2n)
线性阶O(n)
线性对数阶O(n*log2n)
平方阶O(n2)
立方阶O(n3)
...
k次方阶O(nK)
指数阶O(2n)
阶乘阶O(n!)




猜你喜欢

转载自blog.csdn.net/Q_MingTao/article/details/106698401