我必须通过特定键(使用二进制搜索方法)找到第一个和最后一个元素。我已经完成了 searchFirst 方法,但我无法完成 searchLast 方法。有时它起作用,有时它不起作用(这取决于我正在寻找的价值),这就是问题所在。
我有一个 Data 类,其中包含一些属性,如时间戳、名称、产品等,我从文本文件中读取。当我完成填充数据数组时,我使用合并排序对数组进行排序。
然后我需要特定名称的数组的第一个和最后一个元素。
searchFirst 方法完美,但 searchLast 不会做我想要的。
这是 searchLast 方法的代码(n 是他应该查找的值,w 目前不使用)。
public static int searchLast(Data[] array, String n, String w) {
int left = 0;
int right = array.length - 1;
int m = -1;
while (left < right) {
m = (left + right) / 2;
if (array[m].getName().compareTo(n) > 0) {
right = m - 1;
} else {
left = m + 1;
}
}
if (m >= 0) {
if (array[right].getName().equals(n)) {
return right;
}
}
return NO_KEY;
}
我找不到错误也许你可以帮助我......有时代码找到最后一个有时它没有......