1.二分查找
//二分查找非递归
int Binary_Search1(int *num, int len,int target){
int low=0,hight=len-1,mid;
while(low<=hight){
mid=(low+hight)/2;
if(num[mid]==target)
return mid;
else if(num[mid]>target)
hight=mid-1;
else
low=mid+1;
}
return -1;
}
//二分查找递归
int Binary_Search2(int *num, int low, int hight, int target){
while(low<=hight){
int mid=(low+hight)/2;
if(num[mid]==target)
return mid;
else if(num[mid]>target)
return Binary_Search2(num,low,mid-1,target);
else
return Binary_Search2(num,mid+1,hight,target);
}
return -1;
}
2.插值查找
//插值查找
int InterpolationSearch(int *num,int len,int key){
int low=0,high=len-1,mid;
while(low<=high){
mid=low+(high-low)*(key-num[low])/(num[high]-num[low]);
if(num[mid]==key)
return mid;
else if(num[