Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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
Search 搜索未排序的向量(c+;+;)_Search - Fatal编程技术网

Search 搜索未排序的向量(c+;+;)

Search 搜索未排序的向量(c+;+;),search,Search,搜索未排序向量的最快方法是什么? 只从开始到结束搜索向量需要更长的时间,还是使用std::sort然后使用二进制搜索算法?如果需要检查向量是否已排序,则最快的方法是使用std::is_sorted()。这是线性时间 如果需要对其进行排序,可以使用最有效的std::sort()。O(n*logn) 因此,检查比排序本身更快。理论上,排序需要O(logn),二进制搜索需要O(logn)。顺序搜索只需要O(n)。所以,如果只需要搜索一次,顺序搜索就可以了。如果需要在同一向量上进行大量搜索,摊销成本可能

搜索未排序向量的最快方法是什么?
只从开始到结束搜索向量需要更长的时间,还是使用std::sort然后使用二进制搜索算法?

如果需要检查向量是否已排序,则最快的方法是使用std::is_sorted()。这是线性时间

如果需要对其进行排序,可以使用最有效的std::sort()。O(n*logn)

因此,检查比排序本身更快。

理论上,排序需要O(logn),二进制搜索需要O(logn)。顺序搜索只需要O(n)。所以,如果只需要搜索一次,顺序搜索就可以了。如果需要在同一向量上进行大量搜索,摊销成本可能会受益。