C# BinarySearch 的返回值

binarySearch()方法的返回值为:

1、如果找到关键字,则返回值为关键字在数组中的位置索引,且索引从0开始

2、如果没有找到关键字,返回值为负的插入点值,所谓插入点值就是第一个比关键字大的元素在数组中的位置索引,而且这个位置索引从1开始。

假设有排序数组:[10, 20, 30, 40, 50]

情况1:查找 25(不存在)

cs 复制代码
// BinarySearch 查找 25
// 应该插入在 20 和 30 之间,也就是索引 2 的位置,但是索引从1开始,所以变成3,再取负值,就是-3

int index = BinarySearch(25);  // 返回 -3
//-3使用 ~(按位取反)可以得到从0开始的插入点值
int insertIndex = ~index;       // ~(-3) = 2
// insertIndex = 2

情况2:查找 5(比所有值都小)

cs 复制代码
// BinarySearch 查找 5
// 应该插入在最前面,索引 0 的位置
// 所以返回:-1

int index = BinarySearch(5);    // 返回 -1
int insertIndex = ~index;       // ~(-1) = 0
// insertIndex = 0

情况3:查找 60(比所有值都大)

cs 复制代码
// BinarySearch 查找 60
// 应该插入在最后,索引 5 的位置(数组长度)
// 所以返回: -6

int index = BinarySearch(60);   // 返回 -6
int insertIndex = ~index;       // ~(-6) = 5
// insertIndex = 5
相关推荐
沐知全栈开发18 小时前
Perl 数据库连接
开发语言
多米Domi01119 小时前
0x3f第33天复习 (16;45-18:00)
数据结构·python·算法·leetcode·链表
森叶19 小时前
Java 比 Python 高性能的原因:重点在高并发方面
java·开发语言·python
qq_3168377519 小时前
uni.chooseMedia 读取base64 或 二进制
开发语言·前端·javascript
方圆工作室19 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
曹仙逸19 小时前
数据结构day04
数据结构
Lips61120 小时前
2026.1.16力扣刷题
数据结构·算法·leetcode
小二·20 小时前
Python Web 开发进阶实战:混沌工程初探 —— 主动注入故障,构建高韧性系统
开发语言·前端·python
Lkygo20 小时前
LlamaIndex使用指南
linux·开发语言·python·llama
进阶小白猿20 小时前
Java技术八股学习Day20
java·开发语言·学习