【算法】时间复杂度big O

2021-04-14 12:26

阅读:600

标签:就是   理解   个数   第一个   大小   时间复杂度   数字   理论   算法   

首先,评论一个算法的时间复杂度,都是讲的最差值,比如我有一个数组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)

 

还有其他的,比如一个算法需要对一个数组进行两遍循环,那么他的时间复杂度则为O(n²)

【算法】时间复杂度big O

标签:就是   理解   个数   第一个   大小   时间复杂度   数字   理论   算法   

原文地址:https://www.cnblogs.com/fengzx120/p/13337195.html


评论


亲,登录后才可以留言!