/* Name: binarysearch(二分搜索算法) Copyright: bg2bkk Author: bg2bkk Date: 07/09/10 16:18 Description: input:非降序排列的n个元素组a[1....n]和元素x output:m if x=a[m] 0 if x不存在 */ /* 算法主体 binarysearch(l,r) { if l>r then return 0; else m=(l+r)/2; if(x==a[m]) return m; if(x<a[m]) return binarysearch(l,m-1); else return binarysearch(m+1,r); } */ #include<iostream> using namespace std; int m; int binarysearch(int *a,int l,int r,int x) { if(l>r) return 0; else m=(l+r)/2; if(x==a[m]) return m; else if(x<a[m]) return binarysearch(a,l,m-1,x); else return binarysearch(a,m+1,r,x); } int main() { int a[11]={0,1,2,3,4,5,6,7,8,9,10}; int n; cin>>n; n=binarysearch(a,1,10,n); cout<<a[n]<<endl; system("pause"); }
这个二分算法在今天看来是非常之easy的,但是据说1946年的时候就有了二分搜索的想法,但是直到1962年才出现了第一个正确的二分搜索算法,把这个贴上来重点不在其算法,而在于今天算法课上老师给的这个标准写法。这个年代,标准才是最重要的。感谢我的算法老师潘海为。