有序顺序表查询(二分查找)
2017-08-09 08:28
211 查看
Problem Description
顺序表内按照由小到大的次序存放着n个互不相同的整数,任意输入一个整数,判断该整数在顺序表中是否存在。如果在顺序表中存在该整数,输出其在表中的序号;否则输出“No Found!”。
Input
第一行输入整数n (1 <= n <= 100000),表示顺序表的元素个数;
第二行依次输入n个各不相同的有序非负整数,代表表里的元素;
第三行输入整数t (1 <= t <= 100000),代表要查询的次数;
第四行依次输入t个非负整数,代表每次要查询的数值。
保证所有输入的数都在 int 范围内。
Output
输出t行,代表t次查询的结果,如果找到在本行输出该元素在表中的位置,否则本行输出No Found!
Example Input
10
1 22 33 55 63 70 74 79 80 87
4
55 10 2 87
Example Output
4
No Found!
No Found!
10
顺序表内按照由小到大的次序存放着n个互不相同的整数,任意输入一个整数,判断该整数在顺序表中是否存在。如果在顺序表中存在该整数,输出其在表中的序号;否则输出“No Found!”。
Input
第一行输入整数n (1 <= n <= 100000),表示顺序表的元素个数;
第二行依次输入n个各不相同的有序非负整数,代表表里的元素;
第三行输入整数t (1 <= t <= 100000),代表要查询的次数;
第四行依次输入t个非负整数,代表每次要查询的数值。
保证所有输入的数都在 int 范围内。
Output
输出t行,代表t次查询的结果,如果找到在本行输出该元素在表中的位置,否则本行输出No Found!
Example Input
10
1 22 33 55 63 70 74 79 80 87
4
55 10 2 87
Example Output
4
No Found!
No Found!
10
#include<iostream> using namespace std; int TwoInspect(int arr[],int left,int right,int number); int main(){ int n; int arr[100005]; cin>>n; for(int i = 1;i<=n;i++) cin>>arr[i]; int t; cin>>t; while(t--){ int number; cin>>number; if(TwoInspect(arr,1,n,number)==-1) cout<<"No Found!"<<endl; else cout<<TwoInspect(arr,1,n,number)<<endl; } return 0; } int TwoInspect(int arr[],int left,int right,int number){ while(left<=right){ int mid = (left+right)/2; if(arr[mid]>number) right = mid-1; else if(arr[mid]<number) left = mid+1; else return mid; } return -1; }
相关文章推荐
- SDUT 3330----顺序表应用6:有序顺序表查询(二分查找)
- 查找:链表顺序查找和有序数组二分查找
- 有序表查询之一:java实现整型数组二分查找
- 顺序查找和二分查找
- 顺序查找与二分查找的算法实现
- 二分查找思想寻找有序数组中查找最小值
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现) (转载)
- 查找算法总结:顺序查找,二分查找,分块查找,散列查找,二叉排序树查找
- Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找
- 详解Java数据结构和算法(有序数组和二分查找)
- 顺序表应用6:有序顺序表查询
- 顺序表应用6:有序顺序表查询
- 二分查找 —— 有序数组不小于(不大于)某数的第一个(最后一个)元素
- 153.leetcode Find Minimum in Rotated Sorted Array(medium)[有序数组 二分查找]
- php数组的顺序查找和二分查找
- 数据结构上机实验之顺序查找(二分查找)
- [LeetCode]Median of Two Sorted Arrays 二分查找两个有序数组的第k数(中位数)
- php:顺序查找和二分查找
- 旋转有序数组的二分查找
- 9.5-字符串有序数组的二分查找