binary-search相关内容
即使列表已排序,对分搜索也会返回错误的值。列表如下: 1707 ABCD 1707 XXXX 1725 DEFG 1725 HIJK 1725 LMNOP 我是从按照时间(第一列)预先排序的文件中获得这个列表的,所以我不会在代码中对它进行排序。当我对1725 DEFG执行二进制搜索时,它在逐位补码之前返回1725 LMNOP。如果我按位求补,结果将是1725 HIJK。 为什么?
..
假设我有vector,它的索引在vector中通过类Foo中的关键字字段进行外部排序。例如 class Foo { public: int bar; int other; float f; Foo(int _b, int _o, float _f): bar(_b), other(_o), f(_f) {} }; vector
..
我需要对一个数字列表使用二进制搜索,并让它返回该数字的索引。在列表未排序的情况下如何执行此操作?我需要返回未排序列表的索引,而不是排序列表。 推荐答案 您需要对列表的副本进行排序,并将索引列表维护回原始列表。 一种方法是使用decorate-sort-undecorate idiom: >>> values = [5, 2, 7] >>> decorated = list(
..
尝试了解Codility NailingPlanks的解决方案。 问题链接: https://app.codility.com/programmers/lessons/14-binary_search_algorithm/nailing_planks/ 您将看到由N个整数组成的两个非空数组A和B。 这些数组代表N个板。更准确地说,A[K]是起点, B[K]第K−板的末尾。 接下来,您
..
让我们从List BinarySearch: 的重载开始 public int BinarySearch(T item, IComparer comparer); 众所周知,在使用BinarySearch之前,应该使用适当的ICompeller对列表进行排序。但接下来:要搜索列表,您必须提供一个T项。当人们习惯于基于列表中的项的属性来搜索这些项时(例如,使用Linq或委托/谓词),这
..
我总是对二进制搜索算法的条件感到困惑,它花费了我在编程比赛中的大量时间。我的问题是什么时候使用这些条件? 1.while (low 1) 3.while (low
..
我正在尝试解决二进制搜索的Spoj问题,但我总是得到“错误的答案”,我看不到我的问题。 以下是我的b搜索函数: int binarySearch(int numbers[], int size, int key) { int start = 0; int end = size - 1; int middle; while(start
..
我对C#非常陌生。我已经创建了一个List对象,然后正在对特定项目执行BinarySearch。但搜索结果似乎很奇怪。代码如下: class Element { public int x; public Element(int val) { x = val; } } class MyContainer : IComparable { publ
..
此代码有什么问题?无法使用二进制搜索在连续数组中搜索缺少的数字。 a = [1,2,3,4,5,7,8] lent = len(a) beg =0 end = lent-1 while beg
..
我试图编写二进制搜索和线性搜索的代码,看到二进制搜索有时甚至比线性搜索慢两倍,这让我感到震惊。请帮帮我。以下是我的代码。 二进制搜索代码: def binary_search(array, target, n=0): l = len(array)-1 i = l//2 try: ai = array[i] except:
..
美好的一天! 我有一个 ValueObj 列表: 类 ValueObj{整数标识;浮点值;} 如何通过id获取二分查找对象?(列出 tempValues) 我做了 ValueComparer 类,但不知道我说的对吗? 类 ValueComparer;{公共 int 比较(ValueObjx,ValueObjy){如果 (x == y) 返回 0;如果(x == null)返回-1
..
我正在尝试使用objective-c 块实现二进制搜索.我正在使用函数 indexOfObject:inSortedRange:options:usingComparator:.这是一个例子. //一堆数据.NSUInteger 数量 = 900000;//要搜索的数字.NSNumber* number = [NSNumber numberWithInt:724242];//创建一些数组.NSM
..
鉴于以下陈述,取自 thisOracle java教程,涉及Collections类的binarySearch()方法: 两种形式的返回值相同.如果列表包含搜索键,返回其索引.如果不是,则返回值为(-(insertion point) - 1),其中插入点是在该值将被插入到列表中,或者是第一个元素大于值或 list.size() 如果所有元素都在列表小于指定值. 为什么binarySe
..
这个问题是关于线性搜索的效率与对连续存储中预排序数组的二分搜索效率的对比... 我有一个用 fortran (77!) 编写的应用程序.我的部分代码的一个常见操作是在数组中查找索引,使得 gx(i)
..
我的任务是创建一个方法,该方法将打印在排序数组中找到值 x 的所有索引. 我知道,如果我们只是从 0 到 N(数组长度)扫描数组,最坏的情况下运行时间为 O(n).由于将传递给方法的数组将被排序,我假设我可以利用使用二进制搜索,因为这将是 O(log n).但是,这仅适用于数组具有唯一值的情况.因为二进制搜索将在第一次“找到"特定值之后完成.我正在考虑进行二进制搜索以在已排序的数组中找到 x
..
我正在修改一些代码,但我意识到了一些我从来不知道的事情.正常的二分搜索将在数据集中为多次出现的键返回随机索引.如何修改下面的代码以返回第一次出现?这是人们做的事情吗? //从JDK中提取公共静态 int binarySearchValue(InvertedContainer.InvertedIndex[] a, 长键) {返回 bSearchVal(a, 0, a.length, key);}私
..
当我尝试搜索的集合被排序时,我能否以某种方式“指示"LINQ 使用二分搜索.我正在使用 ObservableCollection,填充了有序数据,并且我正在尝试使用 Enumerable.First().在我的谓词中,我根据我的集合排序所依据的字段的值进行过滤. 解决方案 据我所知,使用内置方法是不可能的.但是,编写一个允许您编写类似内容的扩展方法会相对容易: var item = my
..
当给定一组静态对象(静态,即一旦加载它很少更改,就需要重复并发查找以实现最佳性能,这是更好的,HashMap 或使用一些自定义比较器进行二分搜索的数组? 答案是对象类型还是结构类型的函数?Hash 和/或 Equal 函数性能?哈希唯一性?列表大小?Hashset 大小/集合大小? 我正在查看的集合大小可以从 500k 到 10m 不等 - 以防这些信息有用. 虽然我正在寻找 C
..
我在考试中被问到二分搜索是否是一种分而治之的算法.我的回答是肯定的,因为您将问题分解为更小的子问题,直到得出结果. 但是考官问其中的征服部分在哪里,我无法回答.他们也不赞成它实际上是一种分而治之的算法. 但是我在网络上的任何地方都说它是,所以我想知道为什么,以及它的征服部分在哪里? 解决方案 本书 Java 中的数据结构和算法分析,第二版,Mark Allen Weiss
..
这个较早的问题谈到在 O(n) 时间内对双向链表进行二分搜索.该答案中的算法如下: 转到列表中间进行第一次比较. 如果它等于我们正在寻找的元素,我们就完成了. 如果它比我们要查找的元素大,则向后走一半到起点并重复. 如果它比我们要查找的元素小,则向前走一半到起点并重复. 这对于双向链表非常有效,因为它可以向前和向后移动,但这种算法在单向链表中不起作用. 是否可以在单向链表而
..