0
点赞
收藏
分享

微信扫一扫

数据结构中的时间复杂度

一、时间复杂度

1.定义:表示算法的运行时间,与算法基本语句的执行次数成正比

2.表示方法:大O的渐进表示法,用该法来表示算法的时间复杂度,但此法只是用来估算不同算法时间复杂度,因此它有属于自己的衡量规则

二、大O表示法的规则

1.用常数1取代运行时间中的所有加法常数。例如:

for(int i=0;i<5;i++)
int num+=1;
for(int j=0j<5;j++)
int num1+=1;

两个循环共执行了10次,是一个具体的常数,所以时间复杂度为,O(1)

2.在修改后的运行次数函数中,只保留最高阶项。例如:

for(int i=0;i<5;i++)
for(int j=0;j<N;j++)
{
int num1+=1;
}
for(int k=;k<N;k++)
int num2+=1;
for(int l=0;l<5;l++)
int num3+=1;

算法的执行次数为N^2+N+5,时间复杂度为,O(N^2)

3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

4.有些算法的时间复杂度不确定,存在最好,平均,最坏情况。当某一算法存在这三种情况时,取最坏情况为其时间复杂度。例如

//在长度为sz的数组中寻找某一个字符
char* arr(char* a,int N,char b)
{
while(*a!='\0')
{
if(*a==b)
return a;
else
a++;
}
return NULL;
}

在长度为N的数组中寻找某一个字符,最好情况是第一次找到,最坏情况是第N次找到,此时该算法时间复杂度为O(N)

特注释:用折半查找法来查找一个有序数组是否含有某元素时,其时间复杂度为O(logN),N为数组长度



举报

相关推荐

0 条评论