1. 程式人生 > >c/c++遞迴實現二分查詢

c/c++遞迴實現二分查詢

使用遞迴的方式實現二分查詢,程式碼中輸出用的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
)//要動態改變的量放在遞迴函式的輸入裡面(在二分查詢演算法裡,上下標(就是這裡的left,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;
}