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
相关推荐
Scout-leaf1 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530141 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools2 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的3 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21883 天前
.NET 本地Db数据库-技术方案选型
windows·c#
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
lindexi3 天前
dotnet DirectX 通过可等待交换链降低输入渲染延迟
c#·directx·d2d·direct2d·vortice
feifeigo1233 天前
matlab画图工具
开发语言·matlab
dustcell.3 天前
haproxy七层代理
java·开发语言·前端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言