首页
学习
活动
专区
工具
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] 该搜索键不在范围内

39610
  • 【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 方法比较数组时,要求数组的长度相同,并且对应位置上的元素相等。 如果数组中的元素是基本类型,则直接比较值是否相等。

    26460

    java 集合框架

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

    75120

    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

    84110

    数组操作必备: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类是一个方便快捷地操作数组的工具类。

    43451

    面试知识整理-Java基础

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

    59500

    二分查找算法学习总结

    注:如果我们的左边界 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 的结点时,查找成功需要比较的次数 。

    36820

    你可能不知道但却很有用的 Java 特性

    现在让我们来看看具体如何使用,我们需要两个参数进行初始化;第一个是用于累加计算的函数,通常是一个 sum 函数,第二个参数则是累加计算的初始化值。...接下来我们用 10000 作为初始值来创建一个 LongAccumulator,最终结果是多少?其实结果与上文相同,都是 60000,但这次我们并没有使用锁。...() 函数,当这个 key 存在时将会返回 key 所在的索引,如果不存在时将会返回插入的位置-(insertion point)-1。...int[] t = new int[] {1, 2, 4, 5}; int x = Arrays.binarySearch(t, 3); assert ~x == 2; 负数的二进制是以正数的补码表示...,对一个数取反+1 就等于补码,所以这里直接取反就等于 Arrays.binarySearch() 不存在时的返回值了。

    26710

    经典折半查找算法

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

    88030
    领券