zoukankan      html  css  js  c++  java
  • 【算法】时间复杂度big O

    首先,评论一个算法的时间复杂度,都是讲的最差值,比如我有一个数组a=[3,2,1,4,5]需要排序,那算法的时间复杂度是按[5,4,3,2,1]这样子的来排序所需的时间来计算的(怎么理解呢,就是,我数组如果是[1,2,3,4,5],算法直接不需要排序,已经有结果了,那肯定跟我要排序[5,4,3,2,1]所需要的时间是不同的,[5,4,3,2,1]这样子的是每个数字都要计算一下位置)

    ①现在已知一个数组a,里面有5个值,a=[1,2,3,4,5]

    假如:取a[2]需要1秒

    那么:随着a的扩大,比如a有10万个元素,a=[1,2,3,...100000],取a[10000]也需要差不多1秒(因为取数组的值只是计算一个偏移量就可以取到了)

    对于取这个数组某个位置的值,不取决于这个数组的大小,所执行的时间都是1秒

    对于“取这个数组某个位置的值”这个操作来说,时间复杂度是一个常数

    所以,时间复杂度为O(1)

    ②已知一个链表a,有10个数

    假如:取最后一个值需要1秒

    那么:理论上,如果链表a有100个数,那么取最后一个值需要10秒(因为链表需要从第一个值开始一直往下取值)

    对于取这个链表上最后一个位置的值,取决于这个链表的规模,当链表扩大(扩大到N),所需要的时间也在增加,

    所以,时间复杂度为O(n)

  • 相关阅读:
    Ubuntu 16.04 设置静态IP 注意事项
    C++ Primer: 1. 初识输入和输出
    车牌识别1:License Plate Detection and Recognition in Unconstrained Scenarios阅读笔记
    梳理检测论文-Refinement Neural Network
    linux 的 磁盘管理
    ubuntu 18 设置语言环境
    Ubuntu 18.04 的网络配置
    YoLo 实践(1)
    Distributed TensorFlow
    MXNet 分布式环境部署
  • 原文地址:https://www.cnblogs.com/fengzx120/p/13337195.html
Copyright © 2011-2022 走看看