1152: 二分搜索 清疚 2022-06-11 03:13 256阅读 0赞 ## Description ## 在有序序列中查找某一元素x。 ## Input ## 首先输入一个正整数n(n<=100000),表示该序列有n个整数,然后按从小到大的顺序输入n个整数; 接着是一个正整数m,表示有m次查找; 最后是m个整数,表示m个要查找的整数x。 ## Output ## 对于每一次查找,有一行输出。若序列中存在要查找的元素x,则输出元素x在序列中的序号(序号从0开始);若序列中不存在要查找的元素x,则输出"Not found!"。 ## Sample Input ## 51 3 5 7 9 11-112345678910 ## Sample Output ## Not found!0Not found!1Not found!2Not found!3Not found!4Not found! ## HINT ## ## Source ## **二分查找** 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其 [缺点][Link 1] 是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的 [关键字][Link 2] 与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置 [记录][Link 3] 将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的 [记录][Link 3] ,使查找成功,或直到子表不存在为止,此时查找不成功。 **实现过程** 若查找范围为空,返回-1; 否则 mid=(low+high)/2; 若x等于a\[mid\],查找成功,返回mid; 若x小于a\[mid\],在左半区查找; 若x大于a\[mid\],在右半区查找。 ac代码 #include <stdio.h> #include <stdlib.h> int BSearch(int a[],int x,int low,int high); int main() { int n,m,x; int a[100000]; int i; int pos=0; scanf("%d",&n); for(i=0; i<n; i++) scanf("%d",&a[i]); scanf("%d",&m); for(i=1; i<=m; i++) { scanf("%d",&x); pos=BSearch(a,x,0,n-1); if(pos!=-1) printf("%d\n",pos); else printf("Not found!\n"); } return 0; } int BSearch(int a[],int x,int low,int high) { int mid; if(low>high) return -1; else { mid=(low+high)/2; if(x==a[mid]) return mid; else if(x<a[mid]) return BSearch(a,x,low,mid-1); else return BSearch(a,x,mid+1,high); } } [Link 1]: https://baike.baidu.com/item/%E7%BC%BA%E7%82%B9/52792 [Link 2]: https://baike.baidu.com/item/%E5%85%B3%E9%94%AE%E5%AD%97 [Link 3]: https://baike.baidu.com/item/%E8%AE%B0%E5%BD%95/1837758
相关 二分搜索树 一、概念及其介绍 二分搜索树(英语:Binary Search Tree),也称为 二叉查找树 、二叉搜索树 、有序二叉树或排序二叉树。满足以下几个条件: 若它的 墨蓝/ 2024年03月16日 20:54/ 0 赞/ 81 阅读
相关 二分搜索技术 例如,给定n个元素序列,这些元素是有序的(假定为升序),从序列中查找元素x。 用一维数组S\[\]存储该有序序列,设变量low和high表示查找范围的下界和上界,middle 深藏阁楼爱情的钟/ 2022年11月15日 14:17/ 0 赞/ 189 阅读
相关 二分搜索模板 ll binary_search(ll key, ll a[], ll n) { ll low = 1; ll high = n; ll mi 柔情只为你懂/ 2022年11月08日 11:28/ 0 赞/ 236 阅读
相关 1010 二分搜索 Description 给定一递增有序数组a[0,1,...,n-1], 请在数组中搜索给定元素. 搜索过程中请使用mid=(low+high)/2. Input Myth丶恋晨/ 2022年09月11日 12:25/ 0 赞/ 280 阅读
相关 二分搜索法 二分搜索法(C++) // //Description:二分搜索法 // include <iostream> using names 朱雀/ 2022年06月18日 01:55/ 0 赞/ 295 阅读
相关 二分搜索算法 二分搜索算法是计算机程序设计中的基础算法,1946年第一篇二分搜索算法的论文发表,第一个正确的算法实现是在1962年,中间相隔16年,这一事实令人深思。据了解训练有素的程序员仅 古城微笑少年丶/ 2022年06月17日 22:48/ 0 赞/ 223 阅读
相关 二分搜索 //二分查找的前提:有序序列 public static int binSearch(int[] arr,int number){ 约定不等于承诺〃/ 2022年06月12日 13:38/ 0 赞/ 207 阅读
相关 1152: 二分搜索 Description 在有序序列中查找某一元素x。 Input 首先输入一个正整数n(n<=100000),表示该序列有n个整数,然后按从小到大的顺序输入n个整 清疚/ 2022年06月11日 03:13/ 0 赞/ 257 阅读
相关 二分搜索 给定已经排好序的N个元素a\[0,m-1\],找到特定元素x 因为是拍好的序的N个元素,所以可以通过比较的方法不停的判断其属于哪个区间,通过二分每次只需在1/2区间里选择 矫情吗;*/ 2022年05月28日 03:29/ 0 赞/ 187 阅读
相关 二分搜索查找 一、对数 ![1007094-20190114154412410-1669210589.png][] 二、代码 1 def binary_se 缺乏、安全感/ 2021年12月09日 00:57/ 0 赞/ 297 阅读
还没有评论,来说两句吧...