开发中用到的数据结构的总结

简单理解算法的大O表示法

2017-02-28  本文已影响192人  ahking17
理论基础
  1. 算法最终要编译成具体的计算机指令
  2. 每一条指令在具体的计算机, cpu上的运行时间是固定的
  3. 某一个算法通过统计具体执行了多少条计算机指令就可以推导出算法的复杂度
计算三个算法的时间复杂度
long sum1(int n) //2n+4 ----> O(n)
{
    long ret = 0;   //1
    int* array = (int *)malloc(n*sizeof(int));  //1
    int i = 0;  //1

    for(i=0; i< n; i++) //n
    {
        array[i] = i+1;
    }

    for(i=0; i<n; i++)  //n
    {
        ret += array[i];
    }

    free(array);    //1
    return ret;
}

long sum2(int n)    //n+2 ----> O(n)
{
    long ret = 0;   //1
    int i = 0;  //1
    
    for(i=0; i<n; i++)  //n
    {
        ret +=i;
    }

    return ret;
}

long sum3(int n)    //2 O(1)
{
    long ret = 0;   //1

    if(n>0)
    {
        ret = (1+n)*n / 2; //1
    }

    return ret;
}

总结:
上面3个算法的时间复杂度分别为: O(n), O(n), O(1)

refer to:
视频: 算法的基本概念和大O表示法 传智扫地僧

上一篇 下一篇

猜你喜欢

热点阅读