首页 > 其他分享 >计算大 O 时间复杂度 |计算时间复杂度

计算大 O 时间复杂度 |计算时间复杂度

时间:2022-09-07 11:12:09浏览次数:88  
标签:case 复杂度 如果 循环 时间 计算 test 我们

计算大 O 时间复杂度 |计算时间复杂度

Calculate Big O Time Complexity | টাইম কমপ্লেক্সিটি বের করা

全文: https://mpmohi.com/development/calculate-big-o-time-complexity-test-complexity/

我们在计算算法的时间复杂度时遵循一些规则。例如:

1.省略常数项: 如果出现任何复杂性 ** O(3n+2)** 就是这样了 ** 上)** 可以写因为在渐近符号的情况下,我们正在寻找线性或对数等关系。我们不知道实际操作将运行多少。和 ** n** 他们无法发挥其非常高的质量。跟上来 ** n** 它的值为1,那么 ** O(3n+2)** = (3*1+2) = 5 但是 ** n** 如果它的值是 10 万,那么在结果中加 2 对计算机来说就不算什么。同样的事情适用于3分。 ** n** 如果它的值是 10 则为 3 倍 30,如果为 20 则为 60,但如果不是 3 倍 ** n** 如果有质量,就会有复杂性 ** O(n2)** 如果 n = 10,它将是 100,如果是 20,它将是 400,但是我们不会再删除一个,所以常数项在复杂性中被删除了。

2.排除非优势职位: ** O(n2 + n + 4)** 如果是这样我们删除常数,那么它将是 ** O(n2 + n** ) 现在考虑这里的主导项或最大项 ** n2** 如果它的值是10,那么它的值就是100 + 10。如果是100,那么它就是10000 + 100。如果我们像以前那样思考,我们就会明白,与计算机10000次操作的时间相比,100的时间是少得多。因此,如果它的值更大,非显性项的影响。

3.多个循环:请参阅下面的两个代码片段。

test_case = int(输入())
对于我在范围内(test_case):
print(f'这将在第一个循环中打印 {i}')
对于范围内的 j(test_case):
print(f'这将在第二个循环中打印 {j}')

虽然嵌套循环:

test_case = int(输入())
对于我在范围内(test_case):
print(f'这将在第一个循环中打印 {i}')
对于范围内的 j(test_case):
print(f'这将在第二个循环中打印 {j}')

- 在第一种情况下,两个循环正在运行,直到 test_case。第一个循环的时间 ** O(测试用例)** 而第二个 ** O(测试用例)** .那么总数将是 ** O(test_case + test_case)** .为什么要加在这里?因为第二个循环是在第一个循环完成后运行的。在这种情况下,复杂性增加了。

- 在第二种情况下,循环是两个,但是对于第一个循环的每个元素都完成了第二个循环。在这种情况下,复杂性将成倍增加。那么它的复杂度将是 ** O(test_case * test_case)**

4.对数复杂度: 首先我们想想日志到底是什么?我最近总是无法定义此日志 YouTube 上的 Eddie Woo 我看到了它的演讲,这就是我在这里要说的。

日志实际上是查看指数的另一种方式。

所以现在我们需要看看指数是如何工作的。我们知道 (BaseExponent) 这是指数的公式,它的意思是指数乘以基数。 24 这意味着但是 222*2 = 16,底数 2 和指数 4 所以 2 必须乘以 2 4 倍。
假设我们有一根魔杖,它的初始大小为 1 米,但它的大小每单位时间翻一番!然后

- 0 秒内的大小 = 1 米 = 20

- 1 秒内的大小 =(上一步的大小)1*2 m = 2 m = 21

- 2 秒内的尺寸 = 2*2 米 = 4 米 = 22

- 3 秒内尺寸 = 4*2 米 = 8 米 = 23

- 4 秒内的尺寸 = 8*2 米 = 16 米 = 24

我们可以看到,这个徽章实际上代表了元素在 0 秒时的增长率,与之前的 1 米大小相比没有增长。 1秒变成2倍,2秒变成4倍。所以我们可以写出这样的公式(增长率时间)=最终结果。这意味着如果我的产品的增长率为 2,那么 5 秒后它的最终尺寸是多少? => 25=32 意味着我们得到指数的最终结果。现在,如果我们知道最终结果,知道增长率但不知道时间,那么我们如何找出时间呢?
如果我们不断将最终结果除以增长,那么每次除以结果都会得到答案 1,但这是时间。而这其实就是对数和指数的关系。一个是另一个的倒数。

- > (GrowthRateTime) = 结果如果 LogGrowthRateResult = 时间

- basepower = N LogbaseN = 功率

现在在我们的时间复杂度中,如果我们看到我们的输入大小每一步都以一定的速率减小,那么我们可以理解它的复杂度将是对数的。

例如,在二进制搜索的情况下,我们知道每次我们与数组的中间值进行比较,如果它更小,我们创建一个包含右侧元素的新数组,如果它更大,我们创建一个新数组,其中左侧的元素。所以每次我们的输入大小减少一半。每次大多减半 ** O(logN)** 复杂性是。

全文: https://mpmohi.com/development/calculate-big-o-time-complexity-test-complexity/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22586/07480711

标签:case,复杂度,如果,循环,时间,计算,test,我们
From: https://www.cnblogs.com/amboke/p/16664660.html

相关文章

  • 计算两个或多个数字的平均值
    JavaScriptconstavg=(...nums)=>nums.reduce((acc,val)=>acc+val,0)/nums.lengthExamplesavg(...[1,2,3])//2avg(1,2,3)//2......
  • vue3源码学习6-计算属性computed
    packages/reactivity/src/computed.tsexportfunctioncomputed<T>(getterOrOptions:ComputedGetter<T>|WritableComputedOptions<T>,debugOptions?:DebuggerOp......
  • js实现当前时间年-月-日 时-分-秒
    1.对Date的扩展,将Date转化为指定格式的String1.(newDate()).Format("yyyy-MM-ddhh:mm:ss.S")==>2006-07-0208:09:04.4232.(newDate()).Format("yyyy-M-dh:m:s.S......
  • 助教总结(计算机组成原理)
    一、助教工作的具体职责和任务1.收作业在收集软件工程的作业后和与班级学委进行统计,并且批改卷子2.收集平时问题在一些理论性问题中我可以解决的,我会尽量给他们讲解,如果......
  • 软件系统设计:封底计算
    软件系统设计:封底计算系统设计系统设计是一个设计软件系统元素的过程,如组件、架构、接口、模块、数据库类型等。然后定义不同组件如何相互交互的机制。这包括数据流和数......
  • 计算机编程领域的三十种基本思想概览
    运用之妙,存乎一心。计算机编程领域的基本思想,是大量实践与经验的提炼总结,是近乎于“道”的东西。有了思想的指引,就如同有高人指路,行不迷惑,遇事有法,运用之妙,存乎一心。......
  • Excel:计算工作日差和日期差
    日期差公式如下:=DAYS(结束日期,开始日期) 两个日期之间的工作日=NETWORKDAYS(开始日期,结束日期) ......
  • 计算机网络性能指标之吞吐量(throughput)
    计算机网络性能指标速率(或数据率,即bps)指的是你网络单位时间内最大能传输的数据量,往往受很多外界因素的影响(时延、信道的干扰),实际上并没有速率标识的那么大。所以,速率也只......
  • 计算机网络性能指标之带宽(bandwidth)
    第一种意义带宽(bandwidth)本来是指某个信号具有的频带宽度。信号的带宽是指该信号所包含的各种不同频率成分所占据的频率范围。例如,在传统的通信线路上传送的电话信号的标......
  • 计算机基础_同步与异步 和 阻塞与非阻塞
    同步和异步是一双相对的概念,阻塞和非阻塞是另一双相对的概念,即同步!=阻塞,异步!=非阻塞。1.同步与异步同步是指在发布任务(过程调⽤)时,必须一项一项任务(过程调⽤)进行安......