【发布时间】:2014-12-20 03:18:17
【问题描述】:
假设:
int arr[10]; // you have O(n ) linear algorithm for search
但是当你使用时:
std::vector<int> V;
问题是:向量的实现背后的搜索算法复杂度是多少?
【问题讨论】:
-
std::vector具有恒定时间随机访问,所以是一样的。
假设:
int arr[10]; // you have O(n ) linear algorithm for search
但是当你使用时:
std::vector<int> V;
问题是:向量的实现背后的搜索算法复杂度是多少?
【问题讨论】:
std::vector 具有恒定时间随机访问,所以是一样的。
在数组中搜索,std::vector 是 O( n ) 而不是 O( log n )
O( log n )只有在array/std::vector被排序后才会得到。
std::vector 实现不包含任何搜索算法,但是要获得O( log n ),首先需要对其进行排序,然后执行二进制搜索,这与数组相同。
【讨论】:
std::vector 中执行搜索,你可以使用std::find