美文网首页
数据结构每日更新——第一天:算法

数据结构每日更新——第一天:算法

作者: TiHom | 来源:发表于2018-03-19 09:06 被阅读0次

1.算法的特性:有穷性、确定性、可行性、输入、输出

2.算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量需求

3.算法的度量方法:事后统计方法(不科学)、事前分析估算能力

4.算法时间复杂度

推导大O阶:

  • 用参数1代替加法参数
  • 在修改后的运行次数函数中,只保留最高阶项
  • 如果最高阶存在且不是1,则除去与这个项相乘的常数
得到的结果就是大O阶

5.常数阶

int main(){
    int sum=0,n=100; //一次
    sum = (1+n) * n/2; //一次
    printf("%d",sum);  //一次
}

时间复杂度为O(1)

6.线性阶

    int i;
    for(i=0;i<n;i++){
        printf("复杂度为O(1)的程序步骤!");
    }

时间复杂度为O(n)

7.平方阶

    int i,j;
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            printf("复杂度为O(1)的程序步骤!");
        }
    }

时间复杂度为O(n^2)

第二种情况:
    int i,j;
    for(i=0;i<n;i++){
        for(j=i;j<n;j++){
            printf("复杂度为O(1)的程序步骤!");
        }
    }

这里i循环是n次,但是j循环里面逐渐减少。

i=1,j=n-1;i=2,j=n-2;......
可得到总执行次数为:n^2/2 + n/2
所以时间复杂度为O(n^2)

8.对数阶

    int count=1;
    while(count<n){
        count = count * 2;
        printf("复杂度为O(1)的程序步骤!");
    }

这里count每次乘以2,离n越来越近,有多少个2相乘后大于n,则会退出循环。由2^x=n得到x=log2(n)
时间复杂度为O(logn)

9.一般在没有特殊说明情况下,都是指定最坏时间复杂度

10.空间复杂度(不扩展,主要讲时间复杂度,以后再来看)

11.常见时间复杂度所耗时间排序:

O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)

相关文章

  • 算法与数据结构(1),List

    算法与数据结构(1),List 算法与数据结构(2),Map 算法与数据结构(3),并发结构 习惯了,深夜更新博客...

  • 大话数据结构学习笔记

    每日更新数据结构的内容

  • 数据结构每日更新——第一天:算法

    1.算法的特性:有穷性、确定性、可行性、输入、输出 2.算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量...

  • C++、数据结构、算法-读书笔记

    C++、数据结构、算法学习? Dedicate this to someone My love 持续更新中!!!!...

  • 九、哈希表

    这一节记录一下哈希表的学习 持续更新中...数据结构与算法系列博客:一、数据结构与算法概述二、数组及LeetCod...

  • react 内部原理

    内部原理 JSX 语法、内部数据结构、协调器对比算法、算法优化的假设条件、setState 更新、合成事件、Fib...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 挑战每日更新

    挑战每日更新,第一天 加油

  • 数据结构与算法

    参考链接:算法 数据结构与算法 iOS数据结构 和 算法 上 算法 1、数据结构: 集合结构: 线性结构: 树形结...

网友评论

      本文标题:数据结构每日更新——第一天:算法

      本文链接:https://www.haomeiwen.com/subject/ieksqftx.html