- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图为一个大学项目制作自己的二分搜索功能,并想出了这个:
int bSearch(int data[], int dim, int num)
{
if(dim == 0)
return 0;
if(num == data[(dim-1)/2])
return 1;
if(num < data[(dim-1)/2])
return bSearch(data,(dim-1)/2 - 1, num);
if(num > data[(dim-1)/2])
return bSearch(data + ((dim-1)/2) + 1, dim - (dim-1)/2 - 1 , num);
}
我的一个 friend 想出了几乎相同的函数,但无论我把 (dim-1)/2
放在哪里,他都会写 dim/2
,看起来两者都一样工作得同样好,我在尝试一些示例时想出了 (dim-1)/2
并且似乎有效。
为什么这种差异(不)重要?
最佳答案
唯一的区别在于它如何将表分成两部分以查看它位于哪个部分。
传统上,您会将其分成两半,但您可以将其分为 10% 和 90%,看看它在哪个部分,它也可以工作,只是不是最佳选择。
在您的示例中,如果您有一个包含 10 个数字的列表,它会检查第 4 个数字,看看它是否是该数字,如果不是,它会查看它是否小于第 4 个数字,如果不是,则它' d 检查一下是否更大。你的 friend 也会做同样的事情,但以第五号为引用点。两者都可以,但对于大表来说,他的速度可能会稍快一些。
关于c - 具有不同参数的非常相似的binarySearch 实现同样可以正常工作。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33292168/
我正在尝试将一个旧项目从使用 ArrayList 集合升级到 List。除了转换 ArrayList.BinarySearch 之外,一切都非常顺利。虽然 List 有相应的方法,但 ArrayLis
问题 我想自己在 Klant 的对象上实现 BinarySearch 方法,我该怎么做?Klant 有一些变量。 public class Klant { public String klantID;
这个问题在这里已经有了答案: How do I compare strings in Java? (23 个回答) 5年前关闭。 我是 java 的新程序员,我正在尝试使用 binarySearch
我正在尝试在 F# 中实现一个简单的二进制搜索,作为学习函数式编程的一种方式。我已经在我的主要语言 C# 中以命令式方式实现了它,但我认为通过在 F# 中以递归方式实现它,这将是一个很好的挑战,也是学
我有三个长度为 9 的字符串数组,我想看看它们是否都包含相同的名称。我必须在线性时间 O(NlogN) 内完成此操作。我的计划是对两个数组进行排序,然后使用二进制搜索来查找相似的名称。我的代码就像这样
我使用 xpath 从 xml 文件中填充了一个排序的日期列表(以 dd/mm/yyyy 格式存储为字符串)。 然而,当查询列表以查看列表中是否存在某个日期时,我总是得到否定结果(即不存在),即使我已
我正在开发一个 Java 项目 BinarySearch。我正在尝试创建并初始化一个变量 mid ,它将找出中间值,但它给我一个错误,你不能在这里声明一个变量。我也用 split 声明尝试过,但没有用
我是一名 Java 初学者,我正在尝试编写二进制搜索算法的实现代码。 这是我的代码: protected int doSearch(List list, int key) throws Sea
所以基本上,我知道对有序列表执行二进制搜索只是为了它起作用,所以这是我正在使用的列表: Integer[] x = {1, 2, 3, 4, 5, 6}; 所以基本上它可以找到一个整数,但是当我输入一
正如标题所暗示的,我正在编写一些代码来执行 Java 版本的二分搜索。但是,我的返回语句被忽略,函数反而返回最后一个“捕获所有”返回语句,如下所示: public int binarySear
我应该如何使用二进制搜索来查找排序数组中相邻数字之间的距离是否大于 N?例如: Input: 2 5 8 11 16 Distance: 4 所以我们应该得到邻居之间有这样的距离的答案。 (11 到
所以我想写一个代码来返回键所在的索引,或者如果它不存在,它应该在哪里。我错过了什么?min 为 0,max 为 size - 1,buf 已排序 int binarySearch(string buf
当我尝试编写以下行时: int foundIndex = Collections.binarySearch(keys, key); 它显示错误:参数化方法binarySearch(List>, K)类
function binarySearch(items, target){ var startIndex = 0, stopIndex = items.length-1, middle = Math.
尝试用 Java 编写 Python 风格的 bisect_right,并使用 List 参数的泛型类型: import java.util.*; class Util { /* eqv to
我又遇到了一些关于列表和二进制搜索的问题。一般来说,我有: type TMyArr = array [1..5] of Integer; PMyList = record Com
我正在尝试使用 java.util.Arrays 类的二分搜索(不区分大小写),但它无法搜索指定数组中存在的字符串。以下是程序: package com.test; import java.util.
这不起作用: List byteArrayList = .... ; Collections.binarySearch(byteArrayList, new ByteArrayComparator()
嗨,我正在制作一个程序,该程序采用一系列“术语”,每个术语都有自己的权重(长值)和查询(字符串值)。它应该从 .txt 文件中获取许多术语并将它们初始化为私有(private)“Terms”数组,然后
我很想知道当我使用 Arrays.binarySearch 而不进行排序时得到的答案背后的逻辑是什么。 int d[]={6,-4,12,0,-10}; int x=12; int y=Arrays.
我是一名优秀的程序员,十分优秀!