赞
踩
建立一个递增的有序表(用顺序表作存储结构),用折半查找的方法对其实施查找。
顺序表的类型描述:
#define MAXSIZE 50
typedef int ElemType;
typedef struct
{
ElemType *R;
int length;
} SSTable;
函数接口定义:
下面给出了 折半查找 函数的大部分内容,但缺少了一部分(以下划线____标识出来的部分)。
请先将以下代码中画横线的部分补充完整,然后将完整的函数Search_Bin提交系统,完成题目要求的功能。
int Search_Bin(SSTable T, ElemType k)
{
int low,high,mid;
low=1;
high=T.length;
while ( ____ )
{
mid=____ ;
if ( ____)
return mid;
else if (k< T.R[mid])
high=____;
else
low=____;
}
return 0 ;
}
该函数中的参数说明:
ElemType k 要搜索的值
顺序表中第一个数据元素存储在 T.R[1]
测试主程序样例:
int main ()
{ SSTable T; ElemType k;
Create(T);
cin>>k;
int pos=Search_Bin(T,k);
if(pos==0) cout<<"NOT FOUND"<<endl;
else cout<<pos<<endl;
return 0;
}
输入格式:
第一行输入一个整数n,表示顺序表的元素个数。
第二行从小到大输入n个数字,依次为表内元素值。
第三行输入一个要查找的值。
输出格式:
输出这个值在表中的位置。如果没有找到,输出NOT FOUND。
输入样例:
5
2 4 6 8 10
6
输出样例:
3
输入样例2:
5
2 4 6 8 10
18
输出样例2:
NOT FOUND
c++解析
int Search_Bin(SSTable T, ElemType k)
{
int low,high,mid;
low=1;
high=T.length;
while ( low<=high )
{
mid = (low+high)/2;;
if ( T.R[mid] == k)
return mid;
else if (k< T.R[mid])
high=mid-1;
else
low=mid+1;
}
return 0 ;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。