二分搜索算法的实现
2017-04-05 20:30
155 查看
//二分搜索算法的分治策略 //迭代 #include<iostream> using namespace std; int a[100]; int x; int BinarySearch(int a[],int x,int n) {//找到x时返回其在数组的位置,否则返回-1 int left=0,right=n-1; while(left<=right) { int middle=(left+right)/2; if(x==a[middle]) return middle; if(x<a[middle]) right=middle-1; else left=middle+1; } return -1;//未找到x } int main() { int n; cin>>n;//n个数 for(int i=0;i<n;i++) { cin>>a[i]; } cin>>x;//要找的数 cout<<BinarySearch(a,x,n)<<endl; return 0; } //递归实现 #include<iostream> using namespace std; int a[100]; int BinarySearch(int a[],int x,int left,int right) {//递归 if(left<=right) { int middle=(left+right)/2; if(x==a[middle]) return middle; if(x<a[middle]) BinarySearch(a,x,left,middle-1); else BinarySearch(a,x,middle+1,right); } return -1; } int main() { int n,x; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } cin>>x; cout<<BinarySearch(a,x,0,n-1)<<endl; return 0; } //这是《挑战程序设计竞赛》的二分搜索例题 #include<iostream> using namespace std; int a[100],b[100]; int count=0; int BinarySearch(int a[],int b,int n) { int left=0,right=n-1; while(left<=right) { int middle=(left+right)/2; if(middle==b) return 1; if(b<middle) right=middle-1; else left=middle+1; } return -1; } int main() { int n,q; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } cin>>q; for(int j=0;j<q;j++) { cin>>b[j]; } for(int k=0;k<q;k++)//对b[]中每个数进行和a[]比较 { if(BinarySearch(a,b[k],n)) count++; } cout<<count<<endl; return 0; }
相关文章推荐
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- c语言实现二分搜索算法
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(4)二分搜索算法
- 二分搜索算法(递归和非递归实现)
- 二分搜索算法(折半查找)原理以及递归(recuition),迭代(iteration)的两种实现源代码
- [整理]二分查找搜索算法原理及递归,迭代方法实现
- 二分搜索算法(Java代码实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 二分查找算法的C/C++实现
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)