用数学思维去理解时间复杂度的计算

视频讲解过程

一.关于时间复杂度的数学理解

设要处理的数据总量为x,x足够大,为了某个目的:排序、查询、删除、添加之类,需要消耗的计算次数是y。则x和y存在以下关系:
y = ax +b;(a是系数,b是常数) ----------------------------------------------满足这个的时间复杂度是:O(x)------------------------O(n)
y = ax^2 + bx + c (a,b是系数,c是常数)------------------------------------满足这个的时间复杂度是:O(x2)-------------------O(n2)
y = a (a是常数)--------------------------------------------------------------------满足这个的时间复杂度是: O(1)
a^y = x (a是大于等于2的常数)------------------------------------------------满足这个的时间复杂度是:y = logxA| O(logx)-------O(logn)
当x足够大的时候,无论a或b的值是多少,只要满足相应的公式就可以得知时间复杂度。

二.举例说明

举一个简单例子:假设现在有一个长度为m的无序数组,我们要从中找到一个值

那么这个值有可能是在第一个,也有可能是在最后一个,那么关于这这个无序数组的查询次数就是:y = (1/2) x,那么对应的时间复杂度是O(n)

那么我们在举一个例子:假设现在有一个算法:需要我们从1 加到n,求时间复杂度:

这个场景下我们可以套用公式:y = (n+1)n/2 ,那么如果我们套用这个公式我们发现其时间复杂度跟x没有任何关系:那么总体时间复杂度是:O(1)

三.王道数据结构时间复杂度计算

王道数据结构时间复杂度计算

你可能感兴趣的:(数据结构,时间复杂度,算法)