performance - 如何判断一个函数增长的快慢?
问题描述
您能否按照增长最快到最慢的方式对这些进行排名,并解释原因
1(常数)、log2n(对数)、n(线性)、n * log2 n(“n log n”)、n2(二次)、
解决方案
如果您尝试确定两个函数哪个渐近增长更快,只需计算商的极限。所以对于两个函数f(n)
和g(n)
计算lim f(n)/g(n)
。如果它是无穷大f
,增长更快,如果它是零g
增长更快,如果结果是别的东西,它们以相同的速度增长。
至少对于所有学校示例,这应该适用于大多数情况,并避免找到“大”数字的问题。在函数的上下文中,数字是否很大并不总是很清楚。例如f(n) = log(n)
,g(n) = 2^-20 * n
。g
比 增长快f
,但是f(2^20) = 20
和g(2^20) = 1
。
在现实生活中需要使用lim sup
它,有时甚至更复杂。
推荐阅读
- android - 动态添加视图后,按钮 onClick 不会触发
- c++ - 在类中声明指针的静态双端队列
- dataweave - 转换数据库结果以匹配 accounts-api.raml 文件中指定的 Account 架构
- java - Android Studio:“找不到要去的地方”
- python - 如何使用 Python 从 Google Cloud Function 发送具有正确名称的 zip 文件?
- c# - 修剪 Base64 字符串以仅显示 C# 中的前 X 个页面
- hadoop - 没有 Hadoop/Hive 的 Apache Kylin
- scala - 如何在从 cosmos db 读取的 databricks scala 流中修复“错误:未找到:键入 CosmosDBSourceProvider”
- javascript - 使用 JavaScript 隐藏和显示内容
- angular - 如何强制开发人员使用方括号而不是大括号?