javascript - Javascript数组:什么是执行排序然后映射的大O?
问题描述
arr.sort((a, b) => a - b).map(num => num ** 2);
以下操作的大 O 是什么?
据我了解sort
,JS 中嵌入函数的 Big O isO(Nlog(N))
和 Big O map
is O(N)
,因此 Big O is O(Nlog(N))
?
解决方案
您的功能的复杂性f
,对于arr
大小n
。我们假设:
arr.sort ∈ O(nlogn)
arr.map ∈ O(n),
我们可以将这些项相加,因为这些操作是连续完成的(一个接一个。因此,
f(n) ∈ O(nlogn + n)
请注意,该nlogn
术语将缓慢增长,但最终:
as n -> infinity, nlogn >> n
thus, as n -> infinity, nlogn + n -> nlogn
所以我们可以简化为刚好O(nlogn)
足够大n
。
所有这一切都是在说,是的,你明白了。
推荐阅读
- django - Django Formset `extra` field value take huge time to load the page
- python - Scrapy Python can‘t extract links with more stable xpath
- java - 我的短信备份应用程序无法在后台运行?
- next.js - 谷歌提供商的下一个身份验证登录在表单中不起作用
- python - 检测熊猫数据框中的特定字符
- kubernetes - 连接拒绝尝试使用主机名将来自 FluentBit 的 TCP“转发”到 Kubernetes 中的 FluentD 实例
- typescript - UsePipes 用于 NestJs 中的服务功能
- json - Postgresql JsonPath:如何识别数组?
- python - 将 UI 转换为 Python 文件没有显示任何内容
- r - `caret` 包重采样输出中不同模型的准确率完全相同