C# BinarySearch 返回值的具体使用

 更新时间:2026年04月14日 08:48:57   作者:自动化农民工  
本文主要介绍了C# BinarySearch 返回值的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

binarySearch()方法的返回值为:

返回值含义
≥ 0找到元素,返回其在集合中的索引位置
< 0未找到元素,返回一个负数

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

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

未找到时的负数值

当元素未找到时,返回值是一个负数,其计算公式为:

返回值 = ~(插入点索引)

或等价于:

插入点索引 = ~返回值

插入点 = 如果将该元素插入集合中,它应该所在的位置(保持排序顺序)。

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

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

// BinarySearch 查找 25
// 应该插入在 20 和 30 之间,也就是索引 2 的位置,但是索引从1开始,所以变成3,再取负值,就是-3
int index = BinarySearch(25);  // 返回 -3
//-3使用 ~(按位取反)可以得到从0开始的插入点值
int insertIndex = ~index;       // ~(-3) = 2
// insertIndex = 2

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

// BinarySearch 查找 5
// 应该插入在最前面,索引 0 的位置
// 所以返回:-1
int index = BinarySearch(5);    // 返回 -1
int insertIndex = ~index;       // ~(-1) = 0
// insertIndex = 0

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

// BinarySearch 查找 60
// 应该插入在最后,索引 5 的位置(数组长度)
// 所以返回: -6
int index = BinarySearch(60);   // 返回 -6
int insertIndex = ~index;       // ~(-6) = 5
// insertIndex = 5

到此这篇关于C# BinarySearch 返回值的具体使用的文章就介绍到这了,更多相关C# BinarySearch 返回值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# WebApi 异常处理解决方案

    C# WebApi 异常处理解决方案

    这篇文章主要介绍了C# WebApi 异常处理解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • C#设计模式之职责链模式示例详解

    C#设计模式之职责链模式示例详解

    这篇文章主要给大家介绍了关于C#设计模式之职责链模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 使用JsonConverter处理上传文件的路径问题

    使用JsonConverter处理上传文件的路径问题

    我们上传一个文件,把文件保存到服务器上,会有一个明确的物理路径,由于需要从前端访问这个文件,还需要web服务器中的一个虚拟路径,我们可以使用JsonConverter 来自动处理一下,这篇文章主要介绍了使用JsonConverter处理上传文件的路径,需要的朋友可以参考下
    2022-12-12
  • C# wpf常用窗口特效的实现代码

    C# wpf常用窗口特效的实现代码

    在C# WPF应用程序开发中,窗口特效是提升用户体验的重要手段,本文将介绍几种常用的窗口特效及其实现方法,包括动画、阴影、模糊效果等,希望对大家有所帮助
    2024-11-11
  • C#委托初级使用的实例代码

    C#委托初级使用的实例代码

    这篇代码介绍了C#中委托的初级使用实例,有需要的朋友可以参考一下
    2013-06-06
  • C#中的Hashtable 类使用详解

    C#中的Hashtable 类使用详解

    这篇文章主要介绍了C#中的Hashtable 类使用详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • C# 最齐全的上传图片方法

    C# 最齐全的上传图片方法

    本文主要介绍了C# 最齐全的上传图片方法,方法里包括了图片大小限制、图片尺寸、文件内容等等的判断。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 基于字符集、字符编码与HTTP编码解码之万象详解

    基于字符集、字符编码与HTTP编码解码之万象详解

    本篇文章小编为大家介绍,基于字符集、字符编码与HTTP编码解码之万象详解。需要的朋友参考下
    2013-04-04
  • 使用C#编写简单的图形化的可发送附件的邮件客户端程序

    使用C#编写简单的图形化的可发送附件的邮件客户端程序

    这篇文章主要介绍了使用C#编写一个图形化的可发送附件的邮件客户端程序的方法,文中的示例同样是基于支持smtp协议的邮件服务器,需要的朋友可以参考下
    2016-02-02
  • C# 可空类型的具体使用

    C# 可空类型的具体使用

    这篇文章主要介绍了C# 可空类型的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论