顺序表应用6:有序顺序表查询
2016-05-27 19:32
393 查看
顺序表应用6:有序顺序表查询
Time Limit: 7ms Memory limit: 700K 有疑问?点这里^_^
题目描述
顺序表内按照由小到大的次序存放着n个互不相同的整数(1<=n<=20000),任意输入一个整数,判断该整数在顺序表中是否存在。如果在顺序表中存在该整数,输出其在表中的序号;否则输出“No Found!"。
输入
第一行输入整数n,表示顺序表的元素个数;第二行依次输入n个各不相同的有序整数,代表表里的元素;
第三行输入整数t,代表要查询的次数;
第四行依次输入t个整数,代表每次要查询的数值。
输出
输出t行,代表t次查询的结果,如果找到在本行输出该元素在表中的位置,否则本行输出No Found!
示例输入
10 1 22 33 55 63 70 74 79 80 87 4 55 10 2 87
示例输出
4 No Found! No Found! 10
提示
来源
view plaincopyprint如果您复制代码时出现行号,请点击左边的“view
plain”后再复制
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int *creat_list(int size)
{
int *q;
q=(int *)malloc((size)*sizeof(int ));
return q;
}
void destory_list(int *q)
{
free(q);
}
int bin_search(int *p,int len,int h)
{
int l=0,r=len-1;
int mid;
while(l<=r)
{
mid=(l+r)/2;
if(p[mid]==h)
return mid+1;
else if(p[mid]<h)
l=mid+1;
else
r=mid-1;
}
return 0;
}
void search_list(int *t,int *p,int lent,int lenp)
{
int j,k;
for(j=0;j<lent;j++)
{
k=bin_search(p,lenp,t[j]);
if(k>0)
printf("%d\n",k);
else
printf("No Found!\n");
}
}
int main()
{
int m,i,j,*p,k,*t;
scanf("%d",&m);
p=creat_list(m);
for(j=0;j<m;j++)
scanf("%d",&p[j]);
scanf("%d",&k);
t=creat_list(k);
for(j=0;j<k;j++)
scanf("%d",&t[j]);
search_list(t,p,k,m);
destory_list(t);
destory_list(p);
return 0;
}
相关文章推荐
- BZOJ 3534 重建
- pandas处理数据
- linux和mac下的nginx和php的安装
- bzoj 1096 [ZJOI2007]仓库建设
- JVM(java 虚拟机)内存设置
- CityMaker学习教程06 数据的发布
- 电话号字母组合,利用深度搜索的思想。
- 一个不错的机器视觉库 SimpleCV: a kinder, gentler machine vision library
- bash 退出状态值
- Ruby, an interesting Functional Programming
- ios 发布被拒绝错误吗 10.6 Apple and our customers place a high value on simple...的理解和解决方式
- laravel 学习3 文件存储
- Java反射学习
- 类模板
- MFC中用OPENCV如何将图片显示在指定位置?
- 第13周 阅读程序,写出运行结果。(3)纯虚函数
- avfoundation 视频合成 ,合成两段视频和一段音频
- 第二阶段—个人工作总结05
- 丑数
- (Java)用一个“点”类表示三维空间的点,计算该点距离某点的距离