码迷,mamicode.com
首页 > 其他好文 > 详细

时间复杂度的简要分析

时间:2019-10-25 09:16:11      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:class   代码块   void   问题   最大数   数据   表示   oid   时间   

在了解时间复杂度之前,先了解一下原操作和时间频度


一.原操作

原操作是指固有的数据类型的操作,可以理解为基本运算,下面的代码块中 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("\n");
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








时间复杂度的简要分析

标签:class   代码块   void   问题   最大数   数据   表示   oid   时间   

原文地址:https://www.cnblogs.com/Howlet/p/11736193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!