/**
二分查找
*/
#include<iostream>
#include<string>
using namespace std;
//非递归形式
int bin_search(int A[],int n,int key){
int mid ,low=0,high=n-1;
while(low<=high){
mid = (low+high)/2;
if(A[mid]==key) return mid; //返回查找到元素的下标
else if(key<A[mid]){
high = mid-1;
}
else low = mid+1;
}
return -1; //表示没有查到
}
//递归形式
int bin_search_digui(int A[],int low,int high,int key){
int mid;
if(low>high) return -1;
else{
mid = (low+high)/2;
if(key==A[mid]) return mid;
else if(key>A[mid]){
bin_search_digui(A,mid+1,high,key);
}else{
bin_search_digui(A,low,mid-1,key);
}
}
}
int main(){
int A[10]={1,12,32,45,65,87,98,123,124,156};
cout<<"1.非递归形式"<<endl;
cout<<"排序之后的下标为:"<<bin_search(A,10,12)<<endl;
cout<<"排序之后的结果为:"<<A[bin_search(A,10,12)]<<endl;
cout<<"2.递归形式的"<<endl;
cout<<"排序之后的下标为:"<<bin_search_digui(A,0,10,12)<<endl;
cout<<"排序之后的结果为:"<<A[bin_search_digui(A,0,10,12)]<<endl;
}
二分查找--递归和非递归(c++)考研自用
原创mb60c9b4c3db1e6 ©著作权
©著作权归作者所有:来自51CTO博客作者mb60c9b4c3db1e6的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
二分查找(递归与非递归)
二分查找思路:注意二分查找只能用于有序的数组,无序的不能使用二分查找算法具体实现如下://查找单值的二分查找 public st
算法 java 数据结构 二分查找 递归 -
二分查找(Java语言)非递归
不要自卑,去提升实力互联网行业谁技术牛谁是爹如果文章可以带给你能量,那是最好的事!请相信自己,加油o~ 二分查找:二
java 数据结构 算法 python 面试 -
Java编程:二分查找算法(非递归)
二分查找算法(非递归)
非递归 二分查找算法 二分查找 C -
递归二分查找python 二分查找用递归
递归二分查找python 二分查找用递归
递归二分查找python 递归 #include 二分查找 -
【算法拾遗】二分查找递归非递归实现非递归 递归实现 查找算法 封装 二分查找