线性查找
👋线性查找是最简单的查找算法,它从数组的一端开始,逐个检查每个元素,直到找到所需的元素或搜索完整个数组。
template<typename Container, typename T>
bool linearSearch(const Container& container, const T& value) {
for (const auto& elem : container) {
if (elem == value) {
return true; // 找到元素
}
}
return false; // 没有找到元素
}
二分查找
💡二分查找是一种高效的查找算法,它要求数组必须是已排序的。二分查找每次比较数组中间的元素,如果中间元素正好是目标值,则查找结束;如果目标值小于中间元素,则在数组的左半部分继续查找;如果目标值大于中间元素,则在数组的右半部分继续查找。
template<typename Container, typename T>
bool binarySearch(const Container& container, const T& value) {
int left = 0;
int right = container.size() - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (container[mid] == value) {
return true; // 找到元素
} else if (container[mid] < value) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return false; // 没有找到元素
}