特定のキーで最初と最後の要素を見つける必要があります (二分探索法を使用)。searchFirst メソッドは既に完了していますが、searchLast メソッドを完了することができません。機能する場合と機能しない場合があります(探している値によって異なります)。それが問題です。
テキストファイルから読み取るタイムスタンプ、名前、製品などの属性を持つデータクラスがあります。データ配列の入力が完了したら、配列をマージソートでソートします。
次に、特定の名前で配列の最初と最後の要素が必要です。
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;
}
バグが見つからないかもしれません...助けてくれるかもしれません...コードが最後のバグを見つけることもあれば、そうでないこともあります...