【发布时间】:2017-09-02 01:56:37
【问题描述】:
假设array.indexOf() 从数组的开头进行线性搜索是否安全?
所以如果我经常搜索最大值,在调用indexOf之前对数组进行排序会使其运行更快吗?
注意事项:
我只想排序一次并搜索多次。
“最大值”实际上是最流行的搜索键,它是一个字符串。
【问题讨论】:
-
如果要对其进行排序,则不应使用
indexOf,而应使用二进制搜索 -
嗯...对数组进行排序需要的不仅仅是线性时间...但是如果您排序一次并搜索几次可能有意义...那么您应该再次使用类似 max 的东西如果您只需要最大值,则使用堆......如果需要查找不同的值,则使用二叉搜索树。
-
好吧,我所说的“max”实际上是最流行的搜索键,它是一个字符串,是的,我只想排序一次。 @JCOC611
-
您可以使用哈希表或地图。
-
您的应用程序真的优化得非常好并且足够密集,以至于需要这种级别的优化吗?如果没有,请执行任何更易于阅读和维护的操作,然后在发生性能问题时对其进行故障排除。
标签: javascript arrays performance ecmascript-6 ecmascript-5