系统二分查找实现

前言

二分查找不同变种和边界问题使得其在实际编程中难以实现,本文希望探索一种系统的二分查找实现,使在实际编程中应对各种变种能高效实现代码。本文无特殊情况会持续更新。
因左闭右开区间在编程中的优越性,现约定本文所有二分算法皆为左闭右开区间实现。

序列

特征下标(序列首、序列尾)

现有一序列A,各元素下标为 i,i+1,…,n-2,n-1,则称i为序列首,记为A0,n为序列尾,记为AN。
将序列首、序列尾统称为序列的特征下标。

序列的长度

序列长度为AN-A0,记为△A。
特殊地,A0=0的序列长度为AN。

合序列

定义

由两个及以上的序列不封闭的首尾相接构成合序列,用于构成合序列的序列称为分序列。

合序列的特征分序列

现有合序列A,将A的第一个分序列记为A0_,在合序列末尾构造一个长度任意的序列,记为AN_。

合序列的长度

合序列的长度为∑△Ai_(0<=i<N),记为△A。
特殊地,A0_0=0的序列长度为AN。

分序列之间特征下标的关系

Ai_N=A(i+1)_0
与△A(i+1)_=A(i+1)_N-A(i+1)_0联立得:
Ai_N=A(i+1)_N-△A(i+1)_(0<=i<N)

二分查找

分类

寻找元素都相等的子序列首

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值