查找是算法入门的第二关,喜闻乐见,隆重登场
对排好序的数组,效率相当不错,lnN搞定查找
代码实现
int bsearch(int a[],const int& x,int n){
//在从小到大排好序的a[n],中查找值为x的元素
//找到则返回x在数组中的位置,否则返回-1
int l=0,r=n-1;
int mid;
while(l<=r)
{
mid=(l+r)/2;
if(x==a[mid]) return mid;
if(x>a[mid]) l=mid+1;
else r=mid-1;
}
return -1;
}
那如果没有排好序的数组呢,可以构建一个二叉排序树
代码实现(假设我们已经定义好了一个二叉排序树)
BiTree BSTsearch(BiTree T,int x){
if(!T)
return Null;
if(T->data.value == x)
return T;
if(T->data.value < x)
return BSTsearch(T->left,x);
else
return BSTsearch(T->right,x);
}
[1]wiki二叉查找树