• 【算法】时间复杂度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)

  • 相关阅读:
    [ARC080D] Prime Flip
    硬币游戏
    点分治
    OneInDark对众数的爱
    [CF838D] Airplane Arrangements
    网络流总结(转载)
    二分图最大权完美匹配(KM)
    网络流
    FWT
    FFT & NTT
  • 原文地址:https://www.cnblogs.com/fengzx120/p/13337195.html
Copyright © 2020-2023  润新知