40得票15回答
最大子数组和取模M

大多数人都熟悉最大子数组问题。我遇到了这个问题的一个变体,要求程序员输出所有子数组和模某个数字M的最大值。 解决这个变体的朴素方法是找到所有可能的子数组和(其数量级将是N^2,其中N是数组的大小)。当然,这并不够好。问题是 - 我们该如何做得更好? 例如:让我们考虑以下数组: 6 6 1...

39得票3回答
Ruby 中是否有内置的二分查找函数?

我正在寻找一个内置的Ruby方法,它具有与index相同的功能,但使用二分搜索算法,因此需要一个预排序的数组。 我知道我可以编写自己的实现,但根据"Ruby#index Method VS Binary Search",由index使用的内置简单迭代搜索比纯Ruby版本的二分搜索快,因为内置...

39得票4回答
二分查找和二叉搜索树之间的区别是什么?

二分查找和二叉搜索树有什么区别? 它们是相同的吗?阅读互联网上的内容,似乎后者仅针对树(最多有两个子节点),而二分搜索没有遵循这个规则。我理解不够深刻。

38得票13回答
有序列表中比二分查找更快的搜索方法是什么?

在搜索已排序的数组中的值时,是否存在比二分搜索更快的算法? 在我的情况下,我有一个已排序值(可以是任何类型的值)的数组A,我需要返回n,如果我正在查找的值在A[n]和A[n+1]的范围内。

35得票7回答
二分查找中值计算

以下是我从TopCoder关于二分查找的教程中得到的伪代码:binary_search(A, target): lo = 1, hi = size(A) while lo <= hi: mid = lo + (hi-lo)/2 if A[mid] ==...

33得票8回答
C语言lower_bound的实现

根据在这里找到的定义: 返回一个迭代器,该迭代器指向排序范围[first,last)中第一个不小于value的元素。比较使用第一版本的operator<或第二个版本的comp进行。 lower_bound()的C语言等效实现是什么?我知道它将是二分搜索的修改,但似乎无法确定确切的...

33得票8回答
在Java中对一个已排序(内存映射?)文件进行二分查找

我正在尝试将一个Perl程序移植到Java,并在学习Java的过程中进行这个工作。原始程序的核心组件是一个Perl模块,它使用二进制搜索在一个超过500 GB的排序文本文件中进行字符串前缀查找(基本上,"seek"到文件中间的字节偏移量,回溯到最近的换行符,将行前缀与搜索字符串进行比较,"se...

33得票7回答
在数组中找到局部最小值

给定一个整数数组,找到局部最小值。如果元素A[i]满足条件A[i-1] > A[i] and A[i] < A[i+1],其中i = 1...n-2,则称其为局部最小值。在边界元素的情况下,该数字必须比其相邻数字要小。 如果只有一个局部最小值,则可以使用修改后的二分查找解决问题。但是,...

32得票17回答
为什么二分查找是一种分治算法?

在一次考试中,我被问及二分查找是否是一种分治算法。我的回答是是,因为你将问题划分为较小的子问题,直到达到结果。 但考官问道,其中的征服(conquer)部分在哪里,而我无法回答。他们还不认同它实际上是一种分治算法。 但无论我去哪里,在网络上都说它是一种分治算法,所以我想知道为什么,以及其中...

31得票8回答
在一个已排序的列表中找到最接近的值。

我想知道是否有可能在已排序的 List 中找到一个不在列表中的元素最接近的元素。 例如,如果我们有值为 [1,3,6,7] 且希望找到最接近 4 的元素,则应返回 3,因为 3 是数组中小于 4 的最大数。 希望我的表述清晰明了,因为英语不是我的母语。