Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如果数组未排序,可以使用哪种搜索技术?_Algorithm_Search_Binary Search - Fatal编程技术网

Algorithm 如果数组未排序,可以使用哪种搜索技术?

Algorithm 如果数组未排序,可以使用哪种搜索技术?,algorithm,search,binary-search,Algorithm,Search,Binary Search,二进制搜索在O(日志n)中执行搜索。但是,它只能在数组已排序时使用 如果数组未排序,哪种搜索技术是最好的?如果只进行了几次搜索,那么基本线性搜索就是最好的搜索方法 如果要经常搜索,通常最好进行排序,然后使用二进制搜索(或者,如果内容的分布可以预测,则使用插值搜索)。可以进行线性搜索。 但是线性搜索的问题是它有性能问题,需要很多时间。 因此,我建议尽可能对数组进行排序,然后使用二进制搜索。 如果您想要更好的延迟,请尝试插值搜索,这是典型二进制搜索的一个稍微优化的版本。如果您的数据未排序,您可以使用

二进制搜索在O(日志n)中执行搜索。但是,它只能在数组已排序时使用


如果数组未排序,哪种搜索技术是最好的?

如果只进行了几次搜索,那么基本线性搜索就是最好的搜索方法


如果要经常搜索,通常最好进行排序,然后使用二进制搜索(或者,如果内容的分布可以预测,则使用插值搜索)。

可以进行线性搜索。 但是线性搜索的问题是它有性能问题,需要很多时间。 因此,我建议尽可能对数组进行排序,然后使用二进制搜索。
如果您想要更好的延迟,请尝试插值搜索,这是典型二进制搜索的一个稍微优化的版本。

如果您的数据未排序,您可以使用哈希表在O(1)时间内访问您的数据。

我认为您不能做得比
O(n)更好
除非您有一些关于数组顺序的信息。顺序搜索有什么问题?对于未排序的数组,O(n)大约是可以得到的最佳值。问题是,如果数组未排序,则在消除数组中可能的元素后,不会获得任何额外信息。因此,在最坏的情况下,您必须检查每个元素,给您一个
O(n)
运行时间。