查找无序数组的某个值(递归方法实现)
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int Find(const int arr[],int len,int val)
{
if(len<=0 ||arr[len-1]==val)
{
return len-1;
}
else return Find(arr,len-1,val);
}
int FindValue(const int arr[],int len,int val)
{
if(NULL==arr || len<0)
{
return -1;
}
else
{
return Find(arr,len,val);
}
}
int main()
{
int arr[]={12,52,34,90,45,23,56,100,101};
int len=sizeof(arr)/sizeof(int);
int val=45;
int pos=FindValue(arr,len,val);
printf("%d \n",pos);
return 0;
}
查找无序数组的某个值(二分查找实现)
int FindValue(const int arr[],int len,int val)
{
if(NULL==arr || len<1)
{
return -1;
}
int left=0;
int right=len-1;
while(left<=right)
{
int mid=(right-left+1)/2+left;
if(val<arr[mid])
{
right=mid-1;
}
else if(val>arr[mid])
{
left=mid+1;
}
else if(val==arr[mid])
{
return mid;
}
}
return -1;
}
查找无序数组的某个值(二分查找递归实现)
int Find(const int arr[],int left,int right,int val)
{
if(left<0) return -1;
int mid=(right-left+1)/2+left;
if(arr[mid]==val)
{
return mid;
}
else if(val>arr[mid])
{
return Find(arr,mid+1,right,val);
}
else if(val<arr[mid])
{
return Find(arr,left,mid-1,val);
}
}
int FindValue(const int arr[],int len,int val)
{
int pos = -1;
if(NULL==arr || len<1)
{
return pos;
}
else return Find(arr,0,len-1,val);
}