在搜索互联网之后,我无法满足自己,我找到了一套全面的情况,其中线性搜索比二分搜索更可取。
我基本上想知道是否有可能编制一个相对确定的建议列表(从一般编程的角度来看,正如人们在工业中可能发现的那样)。或者,如果可以证实我确实已经看到关于这个主题的所有内容,我将非常感激。
答案 0 :(得分:1)
我在二进制搜索中选择线性搜索的原因列表如下:
列表未排序,只能搜索一次
列表很小(虽然这本身就是一个含糊不清的概念 - 我读的不到100个元素?)
该列表需要在搜索操作之后进行排序(由于插入),因为求助将主导整个任务的时间复杂度
数据结构不是随机访问(如链接列表)
不知道有哪些数据可以帮助搜索(相对邻近?)
答案 1 :(得分:1)
您可能无法提出明确的清单。例如,我在.NET中搜索排序列表的过程中做了一些测试。使用排序的整数列表,当项目数为13时,二进制搜索比顺序搜索更快。对于字符串的排序列表,该数字为8.对于其他类型的比较更昂贵,数字是甚至更小。
使用不同的语言或运行时库运行相同的测试将为您提供不同的数字。它甚至可能取决于内存访问硬件以及其他一些硬件考虑因素。
传统的观点是(或许仍然是)顺序搜索比二元搜索简单得多,复杂性的降低使其在小型列表上具有很大的优势。今天的事实是,CPU速度和内存访问速度非常快,只有当列表非常小时才能实现顺序搜索的简单性。
在比较特定数据类型时,您最多可以提出一组适用于特定硬件上的一个运行时配置的明确规则。如果您更改环境或更改数据类型,则必须编写测试以重新对其进行基准测试。