作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我要把两个函数从使用顺序搜索重写为二分搜索。我了解两者之间的效率差异,但是,在将它们更改为二进制时,我在语法上遇到了问题。
类别
public class SortedList<Item extends Comparable<Item>> implements SortedList<Item> {
private Object[] data = new Object[5];
private int size = 0;
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
public boolean equals(Object o) {
SortedList<Item> lst = (SortedList<Item>) o;
if (size != lst.size)
return false;
Iterator<Item> i1 = lst.iterator();
Iterator<Item> i2 = iterator();
while (i1.hasNext()) {
Item x1 = i1.next();
Item x2 = i2.next();
if (!x1.equals(x2))
return false;
}
return true;
}
//METHOD TO CHANGE TO BINARY-SEARCH
public int indexOf(Item x) {
int low = 0, high = size - 1;
while (low <= high) {
int mid = (low + high) / 2;
if ((int) x == mid)
return mid;
else if ((int) x > mid)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
主要
public class Main {
public static void main(String[] args) {
SortedList<Integer> s = new SortedList<Integer>();
s.add(5);
s.add(6);
s.add(7);
s.add(8);
s.add(9);
s.add(10);
System.out.println(s.indexOf(6)); //-1
}
}
基本上,我在将 Item x
与整数进行比较时遇到问题。似乎即使当我将 x
转换为 Int
时,该函数仍然返回 -1
。我在这个函数中比较的正确方法是什么?如果有必要,我还可以提供更多代码,我包含了我认为相关的所有代码。
最佳答案
您混淆了列表中的索引和元素:
if ((int) x == mid)
你想要:
if(x.equals(itemAtIndex(mid)))
关于java - 使用二分查找方法查找项目的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37401061/
我正在尝试编写一个程序,在名为 items 的数组中进行顺序搜索和二分搜索,该数组具有 10000 个已排序的随机 int 值。第二个名为 targets 的数组加载了 1000 个 int 值(50
当我尝试使用图表并为其编写一些代码但没有成功时,我遇到了一个问题:/!! 我想创建一些东西来获取图形数据并检查它是否:1- 连接2-二分法3-有循环4-是一棵树 所以我想知道,例如,是否可以将其写入以
我是一名优秀的程序员,十分优秀!