在搜索完互联网之后,我无法确定我已经找到了一套全面的情况,在这种情况下,线性搜索比二进制搜索更可取。
我基本上想知道是否有可能汇编一份相对确定的建议清单(从一般编程的角度来看,就像人们在工业中可能发现的那样)。或者,如果能够证实我确实看到了关于这一问题的所有内容,我将非常感激。
发布于 2014-03-21 17:31:56
我选择线性搜索而不是二进制搜索的原因如下:
发布于 2014-03-21 19:44:36
你可能想不出一个确定的名单。例如,我在.NET中对排序列表进行了一段时间的测试。使用排序的整数列表,当条目数为13时,二进制搜索比顺序搜索速度更快。对于排序的字符串列表,该数字为8。对于其他类型,比较比较更昂贵,搜索的数量甚至更小。
使用不同的语言或运行时库运行相同的测试将给出不同的数字。它甚至可能依赖于内存访问硬件以及其他一些硬件考虑因素。
传统的观点是(也许仍然如此),顺序搜索比二进制搜索要简单得多,因此减少的复杂性使它在小列表上有了很大的优势。今天的事实是,CPU速度和内存访问速度如此之快,只有当列表非常小时,顺序搜索的简单性才是一个因素。
在比较特定数据类型时,最多可以提出一组适用于特定硬件上的运行时配置的明确规则集。如果您更改环境或更改数据类型,则必须编写测试来再次对其进行基准测试。
https://stackoverflow.com/questions/22546024
复制相似问题