首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当找不到值时,C#List <T> .BinarySearch返回值

当找不到值时,C# List<T>.BinarySearch返回值为负数,表示要查找的值在列表中不存在。具体返回值的含义如下:

  1. 如果列表为空,则返回-1。
  2. 如果要查找的值小于列表中的所有元素,则返回-1。
  3. 如果要查找的值大于列表中的所有元素,则返回负数,该负数为“插入点索引”的按位求反(即取反后减1)。
    • 插入点索引是指将要插入该值时,应该插入的位置,以保持列表的有序性。
    • 例如,如果要查找的值大于列表中的所有元素,返回值为-(n+1),其中n为列表的长度。

需要注意的是,BinarySearch方法要求列表已经按升序排序。如果列表未排序,结果将是不确定的。

推荐的腾讯云相关产品:无

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 中数组 binarySearch 方法详解

binarySearch(Object[], Object key) 方法的object[]参数是要查找的数组,key参数为要查找的key。...方法的返回值有几种: 1.找到的情况下:如果key在数组中,则返回搜索的索引,从0开始。...2.找不到的情况下:  [1] 搜索不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引”;  [2] 搜索是数组元素,从0开始计数,得搜索的索引;  [3] 搜索不是数组元素,...方法的返回值有几种: 1.找到的情况下:如果key在数组中,则返回搜索的索引。...2.找不到的情况下:  [1] 该搜索键在范围内,但不是数组元素,由1开始计数,得“ - 插入点索引”;  [2] 该搜索键在范围内,且是数组元素,由0开始计数,得搜索的索引;  [3] 该搜索键不在范围内

37410
  • 【JavaSE专栏46】Java常用类Arrays解析,原生数组和List集合有何区别?

    ); // 输出:2 2.3 fill fill(T[] array, T value):将数组的所有元素都填充为指定的。...Arrays类提供了一些常用的方法,如下所示: sort(T[]a):对指定数组进行排序。 binarySearch(T[]a,Tkey):在指定数组中进行二分查找,找到返回索引,找不到返回负数。...equals(T[]a,T[]b):比较两个数组是否相等,包括数组中的元素顺序和内容。 fill(T[]a,Tvalue):将指定填充到数组的每个元素中。...它的使用方式是传入指定的数组和要查找的,如果找到则返回索引,如果找不到则返回负数。要使用 binarySearch 方法,数组必须是有序的。...equals 方法比较数组,要求数组的长度相同,并且对应位置上的元素相等。 如果数组中的元素是基本类型,则直接比较是否相等。

    23860

    java 集合框架

    HashSet具有以下特点: 不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也可能发生变化; HashSet不是同步的; 集合元素可以是null; 内部存储机制: 向HashSet集合中存入一个元素...HashSet集合判断两个元素的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode方法返回值也相等。...,但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的,也就是说遍历集合LinkedHashSet集合里的元素,集合将会按元素的添加顺序来访问集合里的元素。...distance为正数,将list后distance个元素整体移到前面。distance为负数,将 list的前distance个元素整体移到后面。...List asList(T... a):返回由指定数组构成的大小固定的列表,该列表不能使用add和remove方法改变长度 int binarySearch(Object[] a, Object

    74520

    Java 查找算法

    顺序查找 原理 顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位。...System.out.println("请输入你要查找的数:"); //存放控制台输入的语句 int num = input.nextInt(); //调用searc()方法,将返回值保存在...二分算法步骤描述 ① 首先确定整个查找区间的中间位置 mid = ( left + right )/ 2 ② 用待查关键字与中间位置的关键字进行比较; 若相等,则查找成功 若大于,则在右半个区域继续进行折半查找...image.png 代码 public class BinarySearch { public static void main(String[] args) { int list...); System.out.print("输入要查找的数据:"); int key = scanner.nextInt(); int result = binarySearch

    1.1K50

    Collections工具类和Arrays工具类

    distance为正数,将list后distance个元素整体移到前面。distance为负数,将 list的前distance个元素整体移到后面 2....查找、替换 int binarySearch(List list, Object key)//对List进行二分查找,返回索引,注意List必须是有序的 int max(Collection coll)...Collection c, Object o)//统计元素出现次数 int indexOfSubList(List list, List target)//统计target在list中第一次出现的索引,找不到则返回...最好不要用下面这些方法,效率非常低,需要线程安全的集合类型请考虑使用 JUC 包下的并发集合。...二、Arrays工具类 List asList(T... a) //返回由指定数组支持的固定大小的列表 void sort(int[] a) //按照数字顺序排列指定的数组 int binarySearch

    83510

    数组操作必备:Arrays类的实用方法和技巧

    (index); // 输出:2数组复制  需要复制数组,可以使用Arrays类的copyOf方法或copyOfRange方法。...Arrays.toString(newArr1)); // 输出:[1, 2, 3, 4, 5]System.out.println(Arrays.toString(newArr2)); // 输出:[3, 4]数组填充  需要将数组中的元素全部设为同一个...)  binarySearch方法采用二分查找算法进行查找,返回值为指定元素在数组中的索引,如果不存在,则返回负数。...在使用填充方法 Arrays.fill() ,可以将数组中的所有元素填充为指定的。  在编写代码,我们应该根据实际需要选择合适的方法,并正确使用 API 提供的参数和返回值。...最后提醒大家,在使用 Arrays 类的方法,需要根据实际需要选择合适的方法,并正确使用 API 提供的参数和返回值。总结  总之,Java中的Arrays类是一个方便快捷地操作数组的工具类。

    40751

    二分查找算法学习总结

    注:如果我们的左边界 L > 右边界R ,表示没有找到,应结束循环。...A[M] 与待搜索的 T 进行比较 ① A[M] == T 表示找到,返回中间索引 ② A[M] > T,中间右侧的其它元素都大于 T,无需比较,中间索引左边去找,M - 1 设置为右边界,...重新查找 ③ A[M] < T,中间左侧的其它元素都小于 T,无需比较,中间索引右边去找, M + 1 设置为左边界,重新查找 L > R ,表示没有找到,应结束循环 4、解决整数溢出问题...二分查找代码已经演示完了,但是有一个细节我们要注意一下,就是在计算中间索引 M 的时候,我们用的L+R/2这个公式,但是L和R取值都特别大的时候,它俩相加就有可能超过整数能存储的最大,从而造成这个整数溢出问题...5、相关面试题 5.1 有一个有序表为 1,5,8,11,19,22,31,35,40,45,48,49,50 二分查找为 48 的结点,查找成功需要比较的次数 。

    35320

    浅析Android位置权限以及数组寻找索引的坑

    setSelection(int position, boolean animate)和setSelection(int position) 实现机制有较大区别,调用前者重新layout,立即触发onItemSelected...spinner 表示这个锅它不背,其实这个坑怪我自己想当然了,原因在于错误地使用了 Arrays.binarySearch(Object[] a , Object key) 这个方法,想当然地认为了返回值为查找到数组的...代码中, index 的实际是 -2 。...网上找了一下资料: binarySearch(int[] a, int key) 此方法的规则是这样的: 1、如果找到关键字,则返回值为关键字在数组中的位置索引,且索引从0开始 2、如果没有找到关键字...,返回值为负的插入点,所谓插入点就是第一个比关键字大的元素在数组中的位置索引,而且这个位置索引从1开始。

    86820

    面试知识整理-Java基础

    区别为StringBuffer为线程安全 重载和重写的区别 重载发生在一个类中,而重写发生在子类和父类中 重写要求返回值和参数类型相同,修饰符可以和父父类中的相同或者更广泛,不能声明比父类更多的异常...重载要求参数个数或者类型或者顺序不同,返回值没有要求....线程同步的方式 lock() synchronized (同步代码块和同步方法) 信号量机制 多线程三种实现多线程的方式 继承Thread 实现Runable Callable(可以抛出异常 ,可以有返回值...如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,任务数增加,此线程池又可以智能的添加新线程来处理任务。...extends Comparable> int binarySearch(T[] x, T key) { return binarySearch(x, 0, x.length- 1,

    56300

    经典折半查找算法

    找不到数字13呢?...== last时候,【first,last】区间内还有一个,但可惜循环已经结束了。...key存在多个,返回key出现的第一个位置。 若果不存在,first停在第一个大于key的位置,即返回一个这样的下标: 在此处插入key,序列依然有序。...key存在多个,返回key出现的最后一个位置。若果不存在, right停在第一个大于key的位置,即返回一个这样的下标: 在此处插入key,序列依然有序。...二分答案(不只是查找)题目描述中若出现类似: “最大最小”的含义,这个答案就具有单调性,可用二分答案法。这个宏观的最优化问题,可以抽象为一个函数,其“定义域”是该问题的可行方案。

    86230
    领券