时间复杂度计算

admin2024-07-10  35

目录

时间复杂性

⼤O的渐进表⽰法 


时间复杂性

定义:在计算机科学中,算法的时间复杂度是⼀个函数式T(N),它定量描述了该算法的运⾏时间。

 

时间复杂度是衡量程序的时间效率,那么为什么不去计算程序的运⾏时间呢? 

所以时间复杂度只能粗估,不能用来精确的进行计算 

我们看一个实例:

 时间复杂度计算,第1张

根据上述公式

我们可以得出示例:

                T(N)=N^2+2N+10

时间复杂度计算,第2张

在N取不同值时,时间复杂度的粗估值也不同

时间复杂的经典实例:

实例1

void Func2(int N)
{
int count = 0;
for (int k = 0; k < 2 * N ; ++ k)
{
++count;
}
int M = 10;
while (M--)
{
++count;
}
printf("%d\n", count);
}

 


时间复杂度计算,第3张


实例二

void Func3(int N, int M)
{
int count = 0;
for (int k = 0; k < M; ++ k)
{
++count;
}
for (int k = 0; k < N ; ++
k)
{
++count;
}
printf("%d\n", count);
}

 

时间复杂度计算,第4张


实例3:

void Func4(int N)
{
int count = 0;
for (int k = 0; k < 100; ++ k)
{
++count;
}
printf("%d\n", count);
}

时间复杂度计算,第5张


实例4:

const char * strchr ( const char
* str, int character)
{
const char* p_begin = s;
while (*p_begin != character)
{
if (*p_begin == 'void BubbleSort(int* a, int n)
{
assert(a);
for (size_t end = n; end > 0; --end)
{
int exchange = 0;
for (size_t i = 1; i < end; ++i)
{
if (a[i-1] > a[i])
{
Swap(&a[i-1], &a[i]);
exchange = 1;
}
}
if (exchange == 0)
break;
}
}')
return NULL;
p_begin++;
}
return p_begin;
}

 

时间复杂度计算,第6张


 

实例5:

void func5(int n)
{
int cnt = 1;
while (cnt < n)
{
cnt *= 2;
}
}

 

时间复杂度计算,第7张


 

实例6

⼤O的渐进表⽰法 


 

时间复杂度计算,第8张


 

实例7

时间复杂度计算,第9张


 

时间复杂度计算,第10张


 

规则:

各位不妨自行根据规则来对将T(N)改成O(N)

答案:FUNT1:O(N)

FUNT2:O(N)

FUNT3:O(1)

FUNT6:O(logn)

FUNT7:O(n) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!