首页 > 其他分享 >二分查找

二分查找

时间:2023-11-03 11:33:26浏览次数:29  
标签:二分 sz arr right int mid 查找 left

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int a = 7;//a可改变
	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] > a)
		{
			right = mid - 1;
		}
		else if (arr[mid] < a)
		{
			left = mid + 1;
		}
		else
		{
			printf("找到了,下标是:%d\n",mid);
			break;
		}
	}
	if (left > right)
	{
		printf("找不到");
	}
	return 0;
}

标签:二分,sz,arr,right,int,mid,查找,left
From: https://blog.51cto.com/u_16329505/8162947

相关文章

  • 学生管理系统如何查找名字相同的学生
    STU*search_link(STU*head,char*name){if(NULL==head){printf("链表不存在\n");returnNULL;}//判断链表是否存在else{STU*pb=head;while((strcmp(pb->name,name)!=0)&&(pb->nex......
  • 查找附近店铺(Redis GEO数据结构实现)
    附近店铺(RedisGEO数据结构实现)GEO数据结构GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)GEO......
  • 最小生成树、二分图(11/2)
    到集合得最短距离是指点到集合中的所有点最短距离,集合就是遍历或正选中的数prim#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;intn,m;constintN=510;constintINF=0x3f3f3f3f;intg[N][N];intdist[N];boolst[N];intprim(){......
  • 查询算法——顺序查找(优化),二分查找(递归)
    顺序查找顺序查找又称为线性查找,是一种最简单的查找方法。适用于线性表的顺序存储结构和链式存储结构,从第一个元素开始逐个与需要查找的元素x进行比较,当比较到元素值相同时,返回元素m的下标,如果比较到最后都没有找到,则返回-1;时间复杂度为O(n)点击查看代码publicstaticvoidm......
  • Codeforces Round 907 (Div. 2) B. Deja Vu(二分+后缀和+位运算)
    CodeforcesRound907(Div.2)B.DejaVu思路:预处理31位的\(2^x\)存在\(tmp_i\)对于输入\(a_i\),通过查找最后一个二进制1位置,存在\(x0_i\)由题意可知,对于输入的\(x\),如果有\(a_i\)可整除\(x\),则会使\(a_i\)加上\(2^{x-1}\)所以之后除非是\(x-1\),否则无效,因此把输入\(x\)......
  • 随机查找(一切看命)
      对于一个给定的数组,若要查找当中是否包含某个值,传统的方法是遍历数组中的每一个元素,如果找到则返回。如果学习过数据结构,也可以立马想到用哈希表来存储,哈希表的查找性能优异,一般可以达到O(1)的时间复杂度,在最坏情况下也有可能达到O(n)的复杂度。但是今天,我将带来一种有意思的......
  • 如何在excel中查找问号“?”星号“*”和“~”号
    Excel查找替换时如何使用通配符的问号? 若需要查找问号“?”,则在查找内容文本框中输入“~?”若需要查找星号“*”,则在查找内容文本框中输入“~*”。若需要查找问号“~”,则在查找内容文本框中输入“~~”。......
  • 数据结构——二分查找(1)
    ``点击查看代码importjava.util.Scanner;publicclassMain{publicstaticint[]a=newint[10];publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);intn=s.nextInt();intb......
  • 二分查找算法题1
    /***https://leetcode.cn/problems/sqrtx/description/*二分查找*将数据分成两部分*第一部分为平方小于等于target*另外的为大于target*left=mid。right=mid-1;使用+1求中**/publicstaticvoidhanShu19(intx){......
  • 二分模板 Acwing 789 数的范围
     二分一定有解,若出现无解,一定是题目中无解二分步骤:定义check函数,先找到一个x,使得区间左边满足条件区间右边不满足条件,定义mid=l+r>>1去判断于x的关系,此时需要判断边界关系,例如当a[mid]小于x时,说明二分值在x的左边,此时缩小范围为【mid,r】,即令l=mid,此时返回check函数,......