文章标题
文章地址
https://www.jianshu.com/p/f4cca5ce055a
推荐原因
先告诉你时间复杂度 怎么算 ,再 总结计算方法 ,最后告诉你 速算技巧,这也许就是人人想要的干货。
笔记
一,如何理解时间复杂度中的: log n \log{n} logn?
- 在复杂度计算中,将 log 2 n \log_2{n} log2n,简写为 log n \log{n} logn
- 我们知道,当
a
x
=
n
a^x=n
ax=n,此时有
x
=
log
a
n
x=\log_a{n}
x=logan
不知道你们是怎么理解记忆这个公式的,当初我是这样记得
—— log a n \log_a{n} logan就是表示 a a a的多少次方等于 n n n 。
总之,在实际应用时,总是觉得很拗口,需要反应一会儿。
后来一个 搞算法的博士 告诉我,你可以多拆解一下,这样理解记忆
—— log a n \log_a{n} logan就是表示多少个 a a a相乘等于 n n n。
有没有感觉豁然开朗?尽管只是进行了一步简单的拆解,理解记忆和使用都变得尤为简单。不知道你们的数学老师当初怎么传授你的,反正直到这个 算法博士 的点拨,我才觉得我之前的数学白学了,,,
此时, log n \log{n} logn就是表示多少个 2 2 2相乘等于 n n n,
对数时间复杂度,在 二分查找 , 快速排序 , 跳跃表 , 归并排序 等常用算法都有涉及。如果,你还是不好理解,不妨再拆一步得了
—— log n \log{n} logn就是表示 n n n一直除以 2 2 2能除多少次,也就是算法中或代码中, 将 n n n个数,每次分两种情况讨论,能分多少次。