时间复杂度的简要分析
Posted howlet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间复杂度的简要分析相关的知识,希望对你有一定的参考价值。
在了解时间复杂度之前,先了解一下原操作和时间频度
一.原操作
原操作是指固有的数据类型的操作,可以理解为基本运算,下面的代码块中 3,6,7,9 都是原操作
例1
1. void foo (int a[],int n)
2. {
3. int i;
4. for(i = 0;i < n;i++)
5. {
6. a[i] = i + 1;
7. printf("%d",a[i]);
8. }
9. printf("
");
10.}
二.时间频度 T(n)
时间频度是该算法所有原操作的执行次数,它是问题规模n的函数,用T(n)表示.下面采用简化方法去分析,即只考虑算法内最深层循环内的原操作
例2
void foo (int n)
{
int i,j;
for(i = 0;i < n;i++) //循环n次
{
for(j = 0;j < n+10;i++) //循环n+10次
{
printf("%d",i+j); //即深层原操作次数为n^2+10n
}
}
}
即 T(n) = n^2+10n
三.时间复杂度 O(n)
时间复杂度是用时间频度的最大数量级表示: O(n) = ( T(n)的数量级 )
例2中,T(n) = n^2+10n,其最大数量级为 n^2 (即忽略其常数和低级次幂)
最后 O(n) = n^2
以上是关于时间复杂度的简要分析的主要内容,如果未能解决你的问题,请参考以下文章