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

二分查找模板

时间:2023-03-19 22:47:17浏览次数:47  
标签:二分 return int mid param binarySearch 查找 static 模板

/**
	 * 递归
	 * 
	 * @param a
	 * @param l
	 * @param r
	 * @return
	 */
	static int binarySearch(int[] a, int l, int r) {
		if (l > r) {// 这里为什么不加等号呢? 因为 l == r 的情况也要进行一次判断看是否符合条件
			return -1;
		}
		int mid = (l + r) / 2;
		if (x == a[mid]) {
			return mid;
		} else if (x < a[mid]) {
			return binarySearch(a, mid + 1, r);
		} else {
			return binarySearch(a, l, mid - 1);
		}
	}

	/**
	 * 非递归
	 * 
	 * @param a
	 * @param l
	 * @param r
	 * @return
	 */
	static int binarySearch1(int[] a, int l, int r) {
		while (l <= r) {
			int mid = (l + r) / 2;
			if (x == a[mid]) {
				return mid;
			} else if (x < a[mid]) {
				r = mid - 1;
			} else {
				l = mid + 1;
			}
		}
		return -1;
	}

标签:二分,return,int,mid,param,binarySearch,查找,static,模板
From: https://www.cnblogs.com/ChuenSan/p/17234627.html

相关文章

  • 数学知识模板之欧几里得算法
    欧几里得算法求最大公约数intgcd(inta,intb){ returnb?gcd(b,a%b):a;}扩展欧几里得算法//x,y是使x*a+y*b=d的一组解intexgcd(inta,intb,int......
  • 数学知识模板之试除法
    试除法判定质数boolis_prime(intx){ if(x<2)returnfalse; for(inti=2;i<=x/i;i++) if(x%i==0)returnfalse; returntrue;}试除法分解质因......
  • 数学知识模板之筛法求素数
    筛法求素数1.朴素筛法求素数intprimes[N],cnt;boolst[N];voidget_primes(intn){ for(inti=2;i<=n;i++) { if(st[i])continue; primes[cnt++]=......
  • 二分法:区间的重要性(初探)
    哈喽,我是404,正在努力提升代码能力的未来女程序员(笑),这是我的第一篇博客,接下来会记录我的学习之路到我力扣完全可以手撕,废话不多说,正文开搞!通过初见力扣经典题目704.二......
  • vSphere部署系列之10——虚拟机模板和规范
    vSphere部署系列之10——虚拟机模板和规范 原创Sunshyfangtian2016-09-0410:56:01博主文章分类:虚拟化©著作权文章标签模板虚拟化克隆文章分类WindowsServer服务器......
  • 模板约束介绍
    SFINE(substitutionfailureisnotanerror)在模板编程中,SFINE是比较常见的一种特性,举个例子【1】:template<typenameT,unsignedintN>std::size_tGetArrayLen(T(&)[N]){......
  • 线段树模板
    扫描线#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=4e5+10;intread(){ intx=0,f=1;charc=getchar(); while(c>'9'||c<'0')......
  • 普通树模板
    笛卡尔树#include<bits/stdc++.h>usingnamespacestd;constintN=1e7+10;intread(){ intx=0,f=1;charc=getchar(); while(c>'9'||c<'0'){if(c=='-')f=-1;c=ge......
  • C++模板特化,Concept,typename
    typenameT,表示T为类型,而不是变量那,T::A是什么?T可以是我们自己写的类,那T::A就是成员变量或成员函数,另外,T::A还可以是类型,T内定义的类型所以,编译器需要区分,T::A到底是什么......
  • 【FreeMarker模板引擎】5.freemarker结合Struts2使用
    上一篇讲解了Freemarker与Servlet的结合,这里我们讲解一下Freemarker与Struts2的结合。同样首先创建一个WebProject工程:将Struts2的相关核心jar包和F......