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;
}
發佈了28 篇原創文章 · 獲贊 35 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章