二分搜索算法实现

#include
//主函数
int NotRecursionbinarySearch(int array[] ,int length,int searchDate){
int left=0;
int right=length-1;//设置最左边和最右边的标杆
if(array==NULL||length<=0){
return -1;
}
else while(left<=right){
int middle=(right+left)/2;
if(array[middle]==searchDate){
return middle;
}
else {
if(array[middle]left=middle+1;
}
else {
right=middle-1;
}
}
}
}
int RecursionbinarySearch(int array[] ,int searchDate,int start,int end){
int mid;
if(array==NULL||start>end){
return -1;
}
if(start<=end){
mid=(start+end)/2;
if(array[mid]==searchDate){
return mid;}
else
{
if(array[mid]return RecursionbinarySearch( array ,searchDate,start=mid+1, end);
}
else{
return RecursionbinarySearch( array ,searchDate,start, end=mid-1);}
}
}
}
void main(){
int array[]={1,5,6,7,8,9,44,66,99,101};
int length=sizeof(array)/sizeof(array[0]);
int index=NotRecursionbinarySearch(array, length,9);
int index1=RecursionbinarySearch(array,9,0,9);
printf("用非递归算法实现");
printf("用非递归算法实现该数字在数组中的序号是 %d",index);
printf("\n");
printf("用递归算法实现");
printf("用递归算法实现该数字在数组中的序号是 %d",index1);
printf("\n");
}



相关文档
最新文档