首页 > 其他分享 >二分答案,二分搜索,封装

二分答案,二分搜索,封装

时间:2023-08-08 16:46:29浏览次数:36  
标签:二分 封装 template int mid while 搜索 key

namespace binarySearch {
	// 最后一个小于等于
	template <typename T>
	T* binarySearchLastSmall(T* l,T* r,int key) {
		while(l+1<r) {
			T* mid=l+(r-l)/2;
			if(*mid<=key) l=mid;
			else r=mid;
		}
		return l;
	}
	// 最后一个小于
	template <typename T>
	T* binarySearchLastSmallEx(T* l,T* r,int key) {
		while(l+1<r) {
			T* mid=l+(r-l)/2;
			if(*mid<=key) l=mid;
			else r=mid;
		}
		return l;
	}
	// 最后一个大于等于
	template <typename T>
	T* binarySearchLastBig(T* l,T* r,int key) {
		while(l+1<r) {
			T* mid=l+(r-l)/2;
			if(*mid>=key) l=mid;
			else r=mid;
		}
		return l;
	}
	// 最后一个大于
	template <typename T>
	T* binarySearchLastBigEx(T* l,T* r,T key) {
		while(l+1<r) {
			T* mid=l+(r-l)/2;
			if(*mid>key) l=mid;
			else r=mid;
		}
		return l;
	}
	// 自定义
	template <typename T>
	T binarySearchEverything(T l,T r,T key,bool (*comp)(T)) {
		while(l+1<r) {
			T mid=l+(r-l)/2;
			if(comp(mid)) l=mid;
			else r=mid;
		}
		return l;
	}
};
using namespace binarySearch;

拿走拿走。

标签:二分,封装,template,int,mid,while,搜索,key
From: https://www.cnblogs.com/TimelessWelkinBlog/p/17614748.html

相关文章

  • 二分图与匹配 I :二分图的最大匹配
    引入:什么是二分图,什么是匹配口头语言描述:一个图,你把他的点集划为两个集合,让每个集合之间的点没有连边,就是一个二分图。二分图的一个等价定义是:不含有奇数条边的环的图就是一个二分图。证明:显然,观察每一条路径,都是从一个点集走向另外一个点集,则一个环必定得走偶数次。匹配,则......
  • 微信小程序15 做一个搜索框的样式
    一般来说首页上都会有搜索的功能,那么我们来加个搜索框试试在newlist上继续操作 简单搜索框的布局和样式页面上<viewclass="headClass"><inputtype="text"placeholder="请输入"></input></view>但是这样太丑了,完善一下样式.headClass{background-color:silver;......
  • Java HTTP请求封装的方法及实现
    JavaHTTP请求封装的方法及实现在Java开发中,我们经常需要与服务器进行数据交互,发送HTTP请求是其中常见的一种方式。为了简化开发过程,我们可以封装HTTP请求的方法,让调用者只需要关注业务逻辑而不用关心底层的细节实现。本文将介绍一种基于Java的HTTP请求封装方法及其实现。JavaHT......
  • 使用 Go 语言实现二叉搜索树
    二叉树是一种常见并且非常重要的数据结构,在很多项目中都能看到二叉树的身影。它有很多变种,比如红黑树,常被用作std::map和std::set的底层实现;B树和B+树,广泛应用于数据库系统中。本文要介绍的二叉搜索树用的也很多,比如在开源项目go-zero中,就被用来做路由管理。这篇文章也算......
  • 面试官:竟然用广度优先搜索实现Vue的watch?有意思...
    1.#两种watch的基本用法1.1#通过函数回调监听数据最基本的用法是给watch指定一个回调函数并返回你想要监听的响应式数据。conststate1=reactive({name:'前端胖头鱼',age:100})watch(()=>state1.age,()=>{console.log('state1的age发生变化了',state1.age)......
  • Java HTTP请求封装的方法及实现
    JavaHTTP请求封装的方法及实现在Java开发中,我们经常需要与服务器进行数据交互,发送HTTP请求是其中常见的一种方式。为了简化开发过程,我们可以封装HTTP请求的方法,让调用者只需要关注业务逻辑而不用关心底层的细节实现。本文将介绍一种基于Java的HTTP请求封装方法及其实现。JavaHT......
  • 针对搜索引擎优化您的网站(面向新手)
    今天文章将简明扼要的介绍如何优化您的网站有助于提升网站在Google搜索结果中的排名Google不会通过收取费用来提高网站排名,也不会因网站在Google上投放广告而提高其排名。任何与此不符的消息均是子虚乌有。描述应贴切:您的网页应使用准确的描述性标题。我们建议将不同的主题、......
  • 二叉搜索树的概念
    二叉搜索树是一种特殊的二叉树,它的每个节点值大于它的左子节点,且大于全部左子树的节点值,小于它右子节点,且小于全部右子树的节点值。因此二叉搜索树一定程度上算是一种排序结构。那么,采用中序遍历的方式(递归或者非递归)就可以得到从小到大进行排序的元素值......
  • 二分图相关定理
    最长反链:一张有向无环图的最长反链为一个集合\(S\subseteqV\),满足对于\(S\)中的任意两个不同的点\(u,v\inS(u\nev)\),\(u\)不能到达\(v\),\(v\)也不能到达\(u\),且\(S\)的大小尽量大最小不可重链覆盖:在DAG中选出若干条链,经过每个点一次,且链数尽量少最小点覆盖:......
  • IDEA 搜索优化
    Preferences设置关闭此选项ProjectStructure设置排除log文件......