有序顺序表的查询
2016-07-26 13:37
295 查看
顺序表应用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
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
# include <stdio.h> typedef struct node{ int a[20001]; int length; } Data; void binary_search(Data&L,int start,int end,int key); int main() { int n,t,i,key; Data L; scanf("%d",&n); /*注意顺序表开始存的下标*/ for(i=1;i<=n;i++) { scanf("%d",&L.a[i]); } L.length = n; scanf("%d",&t); while(t--) { scanf("%d",&key); binary_search(L,1,n,key); } } void binary_search(Data&L,int start,int end,int key) { int mid; if(start<=end) { mid = (start+end)/2; if(L.a[mid] == key) { printf("%d\n",mid); } else if(L.a[mid] > key) { return binary_search(L,1,mid-1,key); } else { return binary_search(L,mid+1,end,key); } } else { printf("No Found!\n"); } }
相关文章推荐
- C#数据结构之顺序表(SeqList)实例详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- C#实现顺序表(线性表)完整实例
- C语言实现顺序表基本操作汇总
- 数据结构之Treap详解
- C++二分查找在搜索引擎多文档求交的应用分析
- C语言编程中实现二分查找的简单入门实例
- C#二分查找算法实例分析
- 用C语言举例讲解数据结构中的算法复杂度结与顺序表
- C#数据结构之堆栈(Stack)实例详解
- C#数据结构之双向链表(DbLinkList)实例详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- 【数据结构与算法】数组应用4:多项式计算Java版