顺序表应用6:有序顺序表查询
Time Limit: 7MS Memory limit: 700K
题目描述
输入
第二行依次输入n个各不相同的有序整数,代表表里的元素;
第三行输入整数t,代表要查询的次数;
第四行依次输入t个整数,代表每次要查询的数值。
输出
示例输入
10 1 22 33 55 63 70 74 79 80 87 4 55 10 2 87
示例输出
4 No Found! No Found!10
#include<stdio.h> #include<cstdio> #include<iostream> using namespace std; typedef struct { int *elem; int len; } list; int c; void creat(list &l,int n) { l.elem=new int [10100]; l.len=0; for(int i=0; i<n; i++) { cin>>l.elem[i]; l.len++; } } int Search(list&x,int l,int r,int key) { if(l>r) return -1; int mid,i=l,j=r; while(i<=j) { mid=(i+j)/2; if(x.elem[mid]==key) return mid+1; else if(x.elem[mid]<=key) { return Search(x,mid+1,r,key); } else return Search(x,l,mid-1,key); } } int main() { list node1; int n,m,k; cin>>n; creat(node1,n); cin>>m; for(int i=0; i<m; i++) { cin>>k; int j; int f=Search(node1,0,n,k); if(f!=-1) printf("%d\n",f); else printf("No Found!\n"); } return 0; }