c/c++遞迴實現二分查詢
阿新 • • 發佈:2019-02-16
使用遞迴的方式實現二分查詢,程式碼中輸出用的c++,如果是c的話,只要將標頭檔案改成#include<stdio.h>,刪除名稱空間using namespace std;
並且將輸出cout<<換成printf()的形式即可~~
#include <iostream>
using namespace std;int binsearch(int *a,int x,int left,int right);
void main()
{
int arr[]={2,4,6,8,10,12,14,16,18,20};
int result;
int num;
num=18;
result=binsearch(arr,num,0,9);
if(result<0)
cout<<"沒有找到要找的數"<<endl;
else
cout<<"在arr["<<result<<"]中找到"<<num<<endl;
}
int binsearch(int *a,int x,int left,int right
{
int mid;
if(left<=right)
{
mid=(left+right)/2;
if(x==a[mid])
return mid;
else if(x<a[mid])
{
right=mid-1;
}
else if(x>a[mid])
{
left=mid+1;
}
return binsearch(a,x,left,right);//呼叫自身
}
return -1;
}