数据结构——折半查找源代码
int SSearch<T>::BiSearch2(int x,int y,T key)
{//折半查找递归算法
int mid=(x+y)/2;
if(ST[mid].key==key)
return mid;
if(x>y)
return -1; //表示没有找到
if(key<ST[mid].key)
return BiSearch2(x,mid-1,key);
else
return BiSearch2(mid+1,y,key);
}//
template <class T>
int SSearch<T>::BiSearch_2(T key)
{
int k;
k=BiSearch2(0,len-1,key);
return k;
}
template <class T>
void SSearch<T>::Display()
{//输出静态表中的数据元素
cout<<"静态表中的数据元素关键字依次为:\n"; for(int i=0;i<len;i++)
{
cout<<ST[i].key<<" ";
}
cout<<endl;
}
void main()
{
int choice,n,k;
SSearch<int> a;
cout<<"注意:必须先创建静态表)\n";
cout<<"=======================\n";
T key;
cout<<"--- 1. 创建查找表 ------------------------\n" <<"--- 2. 顺序查找 -------------------------\n" <<"--- 3. 折半查找<递归>----------------------\n" <<"--- 4. 折半查找<非递归> -------------------\n"
<<"--- 5. 输出静态表中的所有数据元素关键字----\n"