3

我想用Java制作一个程序,通过使用多线程在动态获取的数组中进行二进制搜索。那么我该如何开始这个程序呢?

4

2 回答 2

4

二进制搜索不适合多线程/并行化。(几乎)没有并行加速的潜力。

OTOH ...如果您只是想知道如何对已排序的元素数组进行并发二进制搜索,那么提供:

  • 没有任何搜索线程修改数组,并且
  • 数组已安全发布(相对于搜索线程),

多线程的常规二进制搜索将是线程安全的。

于 2013-10-07T03:56:50.417 回答
2

与其尝试使搜索本身成为多线程的,不如使调用机制成为多线程并同时进行多个搜索可能会更有价值。根据您正在做的事情,您可能会从您的 Java 容器中免费获得它(例如,对 Servlet 的每个 HTTP 请求都已经获得了它自己的线程,因此您不必做任何额外的事情)。

此外:“过早的优化是万恶之源” ——Donald Knuth

首先我建议保持简单并遵循此处显示的示例:http ://en.wikipedia.org/wiki/Binary_search_algorithm 然后找出您要优化的内容(如果有的话),然后继续作为适当的。

于 2013-10-07T04:02:44.550 回答