顺序表应用6:有序顺序表查询
Time Limit: 1000 ms Memory Limit: 4096 KiB
Problem Description
顺序表内按照由小到大的次序存放着n个互不相同的整数,任意输入一个整数,判断该整数在顺序表中是否存在。如果在顺序表中存在该整数,输出其在表中的序号;否则输出“No Found!"。
Input
第一行输入整数n (1 <= n <= 100000),表示顺序表的元素个数;
第二行依次输入n个各不相同的有序非负整数,代表表里的元素;第三行输入整数t (1 <= t <= 100000),代表要查询的次数;第四行依次输入t个非负整数,代表每次要查询的数值。保证所有输入的数都在 int 范围内。
Output
输出t行,代表t次查询的结果,如果找到在本行输出该元素在表中的位置,否则本行输出No Found!
Sample Input
101 22 33 55 63 70 74 79 80 87455 10 2 87
Sample Output
4No Found!No Found!10 提示:本题可以通过二分查找来完成,也是应用了顺序表和数组类似的原理。 代码实现如下(gcc):
#include#include int a[100010];int setlist(int l,int r,int k){ int i=l,j=r,mid; if(i<=j) { mid=(l+r)/2; if(a[mid]==k) return mid; else if(a[mid]>k) setlist(l,mid-1,k); else if(a[mid]