时间复杂度太难了.. 虚心求教

2023-08-03 09:40:50 +08:00
 Mrzhs

https://www.bilibili.com/video/BV1nE411x7qP
第一次接触这个东西. 感觉好难计算.. 前面的那些 O(1), O(n), O(n²)还可以理解, 从 8 分 40 秒那个例子开始,后面的就听不懂了.
为啥突然就有分数了. 那个 log 又是啥.. 然后去找了找其他视频, 基本上就是讲解题, 没有那种"新手教程"的视频.

有偿求教, 绿色软件:bXJ6aHNzc3M=
救救孩子, 不然真的会挂科🙏🙏🙏

3623 次点击
所在节点    问与答
31 条回复
morgan1freeman
2023-08-03 11:40:52 +08:00
时间复杂度 本质上就是 计算时间随着计算规模增长函数的 导数罢了

导数描述的是函数的 变化趋势,O(1) 表明 计算时间增长函数 不会增长,无论计算规模有多少,始终是常数时间

O(N) 表示 增长函数为 一条斜线,计算规模增长 计算时间同步增长

掌握求导后,其实 大 O 只是对 计算规模增长函数的求导罢了
weidaizi
2023-08-03 12:16:11 +08:00
《数据结构与算法分析-C 语言描述》读书的时候是看这本,感觉挺简单易懂的
Mrzhs
2023-08-03 12:26:25 +08:00
@tony1016 我大概看了下, 确实挺通俗易懂的, 感谢老哥
Mrzhs
2023-08-03 12:39:50 +08:00
@morgan1freeman 所以, 用白话来讲, 就是计算一堆循环里 嵌套最多的那个循环的时间
lilei2023
2023-08-03 13:57:36 +08:00
不懂 log ,就得看看高中数学了,貌似我现在也忘记了,哈哈,回头补补数学
Vinceeeent
2023-08-03 14:00:48 +08:00
普通函数的时间复杂度还是好计算的,递归函数计算起来复杂一下但也有公式。
LaTero
2023-08-03 14:09:22 +08:00
这个东西要算清楚,要会极限。大 O 是同阶无穷大(或无穷小,不过时间复杂度肯定是大),定义是 g(x)=O(f(x)) := g(x)/f(x)最终趋于常数。“最终”的意思是 x 足够大,防止 f(x)=0 。想学清楚的话找本微积分教材,极限一般在第一章。
llwwbb7
2023-08-03 19:59:17 +08:00
基本上就是看循环次数吧,大于常数次小于 n 次基本上就是 logn
jerrywcy
2023-08-03 23:25:01 +08:00
@Mrzhs #24 我没有学过系统的,以下是个人理解
无脑版:算出你的程序需要计算的次数和 n 的关系式,找出增长最快的去掉系数留下,删掉剩下的。
详细一点:当 n 趋于无穷大时,运行消耗时间和一个 n 的函数之比为常数,复杂度就是这个函数。为了简便我们去掉所有系数。类似于高阶无穷小的概念
cryptogems
2023-08-04 17:34:03 +08:00
看了下,我也是刚学完算法,感觉楼上的回答要么就是已经工作了,要么就是已经过了这个坎入门了,这个应该是算法设计与分析第一章的东西,你看不懂的这一块其实就是用三种方法做:1.等差数列 2.等比数列 3.数学归纳法(都是中学数学内容),包括后面的地推算法的时间复杂度也是一样的思路,这块不用慌,属于是找些例题做一做就会了,而且考试基本不考,因为内容太多,后面分治,变治,动态规划更重要(而且不是一个分析思路),这里做几道题,会了就行了,不要在意(最起码我们学校是这样的)
cryptogems
2023-08-04 17:35:34 +08:00
@cryptogems PS 楼上说的思路其实看看就行了,他们大概率工作了不 care 这些,这个是有一套严谨的极限理论推出来的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961976

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX