C++实现指数搜索算法(含完整源码)
指数搜索是一种针对有序数组的搜索算法,它利用二分查找来定位一个子数组,然后检查该子数组中是否包含所需的元素。当数组非常大时,指数搜索比简单的二分查找更有效,因为它可以减少比较次数。
以下是C++实现指数搜索算法的完整源代码及相应的描述:
#include <iostream>
#include <cmath>
using namespace std;
int exponentialSearch(int arr[], int n, int x) {
if (arr[0] == x)
return 0;
int i = 1;
while (i < n && arr[i] <= x)
i = i*2;
return binarySearch(arr, i/2, min(i, n-1), x);
}
int binarySearch(int arr[], int l, int r, int x) {
if (r >= l){
int mid = l + (r - l)/2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return