您的位置:首页 > 其它

使用递归和非递归两种方法实现二分查找!!!

2015-03-11 19:31 567 查看
#include<iostream>

using namespace std;

//非递归的方法

int F_BinarySearch(int a[],int n,int Number)

{

if(a==NULL||n<=0)

{

return -1;

}

int begin=0,end=n-1;

while(begin<=end)

{

int mid=begin+(end-begin)/2;

if(Number==a[mid])

return mid+1; //注意了!!

else if(Number>a[mid])

begin=mid+1; //注意了!!

else

end=mid-1;

}

return -1;

}

//递归方法

int T_BinarySearch(int a[],int Number,int begin,int end)

{

if(begin>end)

{

return -1;

}

int mid=begin+(end-begin)/2;

if(Number==a[mid])

return mid+1;

else if(Number>a[mid])

return T_BinarySearch(a,Number,mid+1,end); //注意了!!

else

return T_BinarySearch(a,Number,begin,mid-1); //注意了!!

}

//定义输出

void print(int result)

{

if(result==-1)

cout<<"数组中不存在这个数!!!"<<endl;

else

cout<<"查到了!!位置在第:"<<result<<"个数"<<endl;

}

int main()

{

int a[]={1,2,3,4,5,6,7,8,9,0};

int length=sizeof(a)/sizeof(a[0]);

cout<<"利用非递归方法进行查找:"<<endl;

int F_result=F_BinarySearch(a,length,5);

print(F_result);

cout<<endl;

cout<<"利用递归方法进行查找:"<<endl;

int T_result=T_BinarySearch(a,10,0,length);

print(T_result);

cout<<endl;

system("pause");

return 0;

}

输出结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: