std:find()用于排序与未排序



考虑两个整数向量v1v2,其中v1已排序,而v2未排序。使用find()在这两个向量中搜索元素的时间复杂度是多少?

std::find()执行线性搜索,即逐元素搜索,直到找到要查找的值。无论集合是否排序,它都是线性的。

如果您有一个排序向量,您可能需要考虑使用std::lower_bound()执行二进制搜索。这将是矢量大小的对数。

std::find的时间复杂度将始终是线性O(n(,因为它不知道std::vector。它必须将向量视为非排序的,并对所有元素执行线性搜索。

然而,实时性可能取决于具体情况。排序可能会有所帮助,因为std::find可能会更快结束。这取决于你在寻找什么。假设您正在一个未排序的数组(5,1,3,4,2)中查找2——您必须比较所有元素。但对于已排序的(1,2,3,4,5),只比较两个元素,就可以找到2

最新更新