我可以用你的帮助。我正在尝试创建一个方法,可以对插入新元素的位置进行二进制搜索,在过程中使用自然顺序比较方法,我写的代码显然是错误的,我是新的写算法,只是不知道如何实现这一点。所以例如
int[] list = {10,15,20,25,30};
我希望插入17,我有另一种方法可以添加它但我需要通过二进制搜索和比较方法假设自然顺序进入的位置。在此先感谢您的帮助。这是我到目前为止,但当我尝试插入53时,它给出了位置4而不是5.任何建议?
public int getIndex(E element) {
E e = (E)element;
int low = 0;
int high = this.size;
int mid = 0;
if(size == 0) {
return 0;
}
while (low <= high) {
mid = (high + low) / 2;
if (list[mid]== null) {
return mid;
}
if (compare(e, list[mid]) < 0) {
high = mid - 1;
} else if (compare(e, list[mid]) > 0) {
low = mid + 1;
} else {
return (int) list[mid];
}
}
return mid;
}
答案 0 :(得分:0)
因为您还没有发布任何代码,所以这里有一个提示:
{10, 15}
- 在本例中为索引1)。 请记住,要使二进制搜索起作用,需要对数组进行排序。它不在你的例子中。