#include<iostream>
#include<algorithm>
#include<ctime>
#define N 10
using namespace std;
/*顺序查找函数内容*/
int find (int *array, int target){
for(int i=0;i<N;i++){
if(target==array[i])
return i;
}
return -1;
}
/*非递归二分查找*/
int BinarySearch(int *array, int size, int target)
{
if(array==NULL||size==0)
return -1;
int low=0,high=size;
int mid=0;
while(low<=high){
mid=(low+high)/2;
if(array[mid]>target)
low=mid+1;
else if(array[mid]<target)
high=mid-1;
else
return mid;
}
return -1;
}
/*递归二分查询 lg(N)*/
int BinarySearchRecursive(int *array, int low, int high, int target)
{
if ( low > high )
return -1;
int mid = ( low + high )/2;
if (array[mid] == target )
return mid;
else if ( array[mid] < target )
return BinarySearchRecursive(array, mid+1, high, target);
else
return BinarySearchRecursive(array, low, mid-1, target);
二分法查找实现(递归与非递归)
最新推荐文章于 2025-07-09 13:11:27 发布