binary-search相关内容

列表<;T>;二进制搜索返回错误的值

即使列表已排序,对分搜索也会返回错误的值。列表如下: 1707 ABCD 1707 XXXX 1725 DEFG 1725 HIJK 1725 LMNOP 我是从按照时间(第一列)预先排序的文件中获得这个列表的,所以我不会在代码中对它进行排序。当我对1725 DEFG执行二进制搜索时,它在逐位补码之前返回1725 LMNOP。如果我按位求补,结果将是1725 HIJK。 为什么? ..
发布时间:2022-08-18 17:54:42 C#/.NET

对未排序列表进行二进制搜索

我需要对一个数字列表使用二进制搜索,并让它返回该数字的索引。在列表未排序的情况下如何执行此操作?我需要返回未排序列表的索引,而不是排序列表。 推荐答案 您需要对列表的副本进行排序,并将索引列表维护回原始列表。 一种方法是使用decorate-sort-undecorate idiom: >>> values = [5, 2, 7] >>> decorated = list( ..
发布时间:2022-08-18 17:36:52 Python

Codness钉板

尝试了解Codility NailingPlanks的解决方案。 问题链接: https://app.codility.com/programmers/lessons/14-binary_search_algorithm/nailing_planks/ 您将看到由N个整数组成的两个非空数组A和B。 这些数组代表N个板。更准确地说,A[K]是起点, B[K]第K−板的末尾。 接下来,您 ..
发布时间:2022-08-18 17:33:17 Java开发

如何使用二进制搜索列表<;T>;

让我们从List BinarySearch: 的重载开始 public int BinarySearch(T item, IComparer comparer); 众所周知,在使用BinarySearch之前,应该使用适当的ICompeller对列表进行排序。但接下来:要搜索列表,您必须提供一个T项。当人们习惯于基于列表中的项的属性来搜索这些项时(例如,使用Linq或委托/谓词),这 ..
发布时间:2022-08-18 17:21:30 C#/.NET

二分搜索条件

我总是对二进制搜索算法的条件感到困惑,它花费了我在编程比赛中的大量时间。我的问题是什么时候使用这些条件? 1.while (low 1) 3.while (low ..
发布时间:2022-08-18 17:10:22 Java开发

这个二进制搜索功能有什么问题?

我正在尝试解决二进制搜索的Spoj问题,但我总是得到“错误的答案”,我看不到我的问题。 以下是我的b搜索函数: int binarySearch(int numbers[], int size, int key) { int start = 0; int end = size - 1; int middle; while(start ..
发布时间:2022-08-18 17:01:08 其他开发

按 ID 的 BinarySearch 对象数组

美好的一天! 我有一个 ValueObj 列表: 类 ValueObj{整数标识;浮点值;} 如何通过id获取二分查找对象?(列出 tempValues) 我做了 ValueComparer 类,但不知道我说的对吗? 类 ValueComparer;{公共 int 比较(ValueObjx,ValueObjy){如果 (x == y) 返回 0;如果(x == null)返回-1 ..
发布时间:2022-01-25 09:43:45 C#/.NET

Collections.binarySearch(List list, K key) 澄清.爪哇

鉴于以下陈述,取自 thisOracle java教程,涉及Collections类的binarySearch()方法: 两种形式的返回值相同.如果列表包含搜索键,返回其索引.如果不是,则返回值为(-(insertion point) - 1),其中插入点是在该值将被插入到列表中,或者是第一个元素大于值或 list.size() 如果所有元素都在列表小于指定值. 为什么binarySe ..
发布时间:2022-01-19 14:49:26 Java开发

使用带有重复的排序数组的二分搜索

我的任务是创建一个方法,该方法将打印在排序数组中找到值 x 的所有索引. 我知道,如果我们只是从 0 到 N(数组长度)扫描数组,最坏的情况下运行时间为 O(n).由于将传递给方法的数组将被排序,我假设我可以利用使用二进制搜索,因为这将是 O(log n).但是,这仅适用于数组具有唯一值的情况.因为二进制搜索将在第一次“找到"特定值之后完成.我正在考虑进行二进制搜索以在已排序的数组中找到 x ..
发布时间:2022-01-10 13:28:39 Java开发

二分查找中的第一次出现

我正在修改一些代码,但我意识到了一些我从来不知道的事情.正常的二分搜索将在数据集中为多次出现的键返回随机索引.如何修改下面的代码以返回第一次出现?这是人们做的事情吗? //从JDK中提取公共静态 int binarySearchValue(InvertedContainer.InvertedIndex[] a, 长键) {返回 bSearchVal(a, 0, a.length, key);}私 ..
发布时间:2022-01-09 19:51:37 Java开发

当集合被排序时,LINQ 可以使用二分搜索吗?

当我尝试搜索的集合被排序时,我能否以某种方式“指示"LINQ 使用二分搜索.我正在使用 ObservableCollection,填充了有序数据,并且我正在尝试使用 Enumerable.First().在我的谓词中,我根据我的集合排序所依据的字段的值进行过滤. 解决方案 据我所知,使用内置方法是不可能的.但是,编写一个允许您编写类似内容的扩展方法会相对容易: var item = my ..
发布时间:2021-12-27 17:56:21 C#/.NET

哈希查找和二分查找哪个更快?

当给定一组静态对象(静态,即一旦加载它很少更改,就需要重复并发查找以实现最佳性能,这是更好的,HashMap 或使用一些自定义比较器进行二分搜索的数组? 答案是对象类型还是结构类型的函数?Hash 和/或 Equal 函数性能?哈希唯一性?列表大小?Hashset 大小/集合大小? 我正在查看的集合大小可以从 500k 到 10m 不等 - 以防这些信息有用. 虽然我正在寻找 C ..
发布时间:2021-12-27 16:20:10 其他开发

为什么二分搜索是一种分而治之的算法?

我在考试中被问到二分搜索是否是一种分而治之的算法.我的回答是肯定的,因为您将问题分解为更小的子问题,直到得出结果. 但是考官问其中的征服部分在哪里,我无法回答.他们也不赞成它实际上是一种分而治之的算法. 但是我在网络上的任何地方都说它是,所以我想知道为什么,以及它的征服部分在哪里? 解决方案 本书 Java 中的数据结构和算法分析,第二版,Mark Allen Weiss ..

如何在 O(n) 时间内对单向链表进行二分搜索?

这个较早的问题谈到在 O(n) 时间内对双向链表进行二分搜索.该答案中的算法如下: 转到列表中间进行第一次比较. 如果它等于我们正在寻找的元素,我们就完成了. 如果它比我们要查找的元素大,则向后走一半到起点并重复. 如果它比我们要查找的元素小,则向前走一半到起点并重复. 这对于双向链表非常有效,因为它可以向前和向后移动,但这种算法在单向链表中不起作用. 是否可以在单向链表而 ..