Javascript 数组:执行排序然后映射的 Big O 是什么?

Kon*_*nk1 2 javascript sorting performance big-o time-complexity

arr.sort((a, b) => a - b).map(num => num ** 2);
Run Code Online (Sandbox Code Playgroud)

以下操作的 Big O 是什么?

据我了解,sortJS中嵌入函数的Big O是O(Nlog(N)),并且Big OmapO(N),因此Big O是O(Nlog(N))

Col*_*inD 6

函数的复杂性farr大小n。我们假设:

\n
arr.sort \xe2\x88\x88 O(nlogn)\narr.map \xe2\x88\x88 O(n),\n
Run Code Online (Sandbox Code Playgroud)\n

我们可以对这些项求和,因为这些操作是串行完成的(一个接一个)。因此,

\n
f(n) \xe2\x88\x88 O(nlogn + n)\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,该nlogn术语将缓慢增长,但最终:

\n
as n -> infinity, nlogn >> n\nthus, as n -> infinity, nlogn + n -> nlogn\n
Run Code Online (Sandbox Code Playgroud)\n

所以我们可以简化为O(nlogn)足够大的n

\n

所有这一切都是在说,是的,你明白了。

\n

  • 这是我遗漏的一个重要的澄清点,谢谢!非常重要的是要注意,这些操作绝不是嵌套的,因此我们可以将术语相加。 (2认同)