C++에서 보간 검색 알고리즘을 사용하는 방법
소개:
많은 응용 프로그램에서 정렬된 배열이나 정렬된 데이터 컬렉션에서 특정 요소를 검색하고 찾아야 하는 경우가 많습니다. 전통적인 이진 검색 알고리즘은 가장 일반적으로 사용되는 방법 중 하나이지만 경우에 따라 충분히 효율적이지 않을 수 있습니다. 보간 검색 알고리즘은 알려진 데이터의 분포를 기반으로 대상 요소를 더 빠르게 찾을 수 있는 향상된 검색 알고리즘입니다. 이 기사에서는 보간 검색 알고리즘이 무엇인지, C++에서 이를 사용하는 방법을 소개하고 코드 예제를 제공합니다.
#include <iostream> #include <vector> // 插值搜索算法函数 int interpolationSearch(const std::vector<int>& arr, int target) { int low = 0; int high = arr.size() - 1; while (low <= high && target >= arr[low] && target <= arr[high]) { // 计算预估位置 int pos = low + ((target - arr[low]) * (high - low)) / (arr[high] - arr[low]); if (arr[pos] == target) { return pos; } if (arr[pos] < target) { low = pos + 1; } else { high = pos - 1; } } return -1; // 没有找到目标元素 } int main() { std::vector<int> arr = {1, 3, 5, 7, 9, 11, 13, 15}; int target = 9; int result = interpolationSearch(arr, target); if (result != -1) { std::cout << "目标元素 " << target << " 的索引位置为 " << result << std::endl; } else { std::cout << "目标元素 " << target << " 未找到" << std::endl; } return 0; }
위 코드에서는 먼저 보간 검색 알고리즘을 수행하기 위해 interpolationSearch
的函数,它接受一个有序的整数向量arr
和目标元素target
作为参数。接下来,在函数中我们定义了两个指针low
和high
,它们表示搜索的范围。然后,我们使用一个循环来进行搜索,直到找到目标元素或搜索范围为空。在循环中,我们首先计算目标元素的预估位置pos
,然后检查该位置上的元素是否是目标元素。如果是,我们返回该位置。否则,我们根据目标元素和预估位置的比较结果更新low
和high
指针的值,缩小搜索范围,直到找到目标元素或搜索范围为空。最后,在主函数中,我们定义了一个有序的整数向量arr
和目标元素target
,并调用interpolationSearch
라는 함수를 정의합니다. 대상 요소가 발견되면 해당 인덱스 위치를 인쇄하고, 대상 요소를 찾을 수 없으면 해당 프롬프트 정보를 인쇄합니다.
위 내용은 C++에서 보간 검색 알고리즘을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!