使用递归和非递归两种方法实现二分查找!!!
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;
}
输出结果如下:
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;
}
输出结果如下:
相关文章推荐
- 使用c语言指针和递归方法实现二分查找
- C语言经典算法(九)——递归实现二分查找的两种方法
- 二分查找的两种实现方式--循环和递归
- 练习题013:二分查找(递归和非递归两种方法)
- php二分查找的两种实现方法
- 递归 / 迭代两种方法实现查找指定目录下所有文件
- 二分查找的两种实现(循环与递归)
- 二分查找的两种实现方法
- 二分查找的两种实现方法
- 二分查找的两种实现方式(递归和非递归)--python实现
- 二分查找 (循环、递归两种方法)
- java使用递归和非递归实现二分查找
- [整理]二分查找搜索算法原理及递归,迭代方法实现
- 编写查找一个单链表特定元素的程序。分别使用递归和非递归方法实现,并比较它们的运行时间。
- n的k次方,使用递归的两种实现方法
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- 两种方法使用jquery实现左右移动效果(包含each遍历方式)
- Eclipse SWT Tree使用递归方法,实现Tree显示目录的显示