七、查找
1、顺序表中二分查找的非递归算法
int search(int * a,int max,int x)
{
int low,mid,high;
low = 0;
high = max - 1;
while(low <= high)
{
mid = (high+low)/2;
if(x < a[mid])
{
high = mid-1;
}
else if(x > a[mid])
{
low = mid + 1;
}
else
{
return mid;
}
}
return 0;
}
2、顺序表二分查找的递归算法
int search(int * a,int x; int low,int high)
{
int mid;
if(low > high)
return - 1;
mid = (low + high)/2;
if(x == a[mid])
{
return mid;
}
if(x < a[mid])
return (search(a,x,low,mid-1));
return (search(a,x,mid+1,high))
}
3、二叉排序树查找算法
BTree * bstreeSearch(BTree * t,int key)
{
while(t != NULL && key != t->data)
{
if(key < t->data) t = t->lchild;
else t = t->rchild;
}
return t;
}