【发布时间】:2012-02-29 15:33:13
【问题描述】:
情况是这样的。我有一个排序的整数列表,表示需要在特定毫秒触发的事件。该列表可能如下所示:
0
1500
5000
9348
89234
109280
109281
109283
150000
然后我有一个playhead,它通常每 100 毫秒向前移动一次,但也可以随机搜索和向前和向后擦洗。该播放头不能保证是 100 的倍数,但可以降到该倍数而没有任何实际问题。
我的挑战是能够有效地找到列表中小于或等于当前播放头的最近元素。列表的平均长度在 300 到 1500 个元素之间。我可以很容易地以设定的时间间隔进行优化,但随机搜索要复杂一些。
让我真希望我没有在算法课上睡觉。
【问题讨论】:
-
最简单的方法:向后循环数组并选择小于或等于播放头的第一个元素。你试过了吗,这对你的用例来说效率太低了吗?
-
挑战在于有效地找到...线性搜索效率不高。
-
它可能足够高效。对于现代机器来说,1500 个元素并不是那么多。
-
线性搜索是我们现在所做的。 1500不算多,但是在浏览器播放视频的JS中的1500有点不一样。
标签: javascript list integer