D
Dendemeier
Gast
Hallo Zusammen
Folgendes Programm sucht nach einem bestimmten Element in einem Array mittels der Binäre Suche.
Meines erachtens müsste aber ''return binarySearch(array, value, half+1, large)'' ersetzt werden mit
''return binarySearch(array, value, half, large)'' --> also ohen das +1.
Woher kommt das +1??
Folgendes Programm sucht nach einem bestimmten Element in einem Array mittels der Binäre Suche.
Meines erachtens müsste aber ''return binarySearch(array, value, half+1, large)'' ersetzt werden mit
''return binarySearch(array, value, half, large)'' --> also ohen das +1.
Woher kommt das +1??
Java:
public class Aufg_4_6 {
public static int binarySearch(int[] array, int value, int small, int large) {
int half = small + (large-small) / 2; // this one will not overflow
if (value == array[half]) {
return half;
} else {
if (small == large) {
return -1;
} else {
if ( value < array[half]) {
return binarySearch(array, value, small, half );
} else {
return binarySearch(array, value, half+1, large);
}
}
}
}
public static int binarySearch(int[] array, int value) {
return binarySearch(array, value, 0, array.length - 1);
}
public static void main(String[] args) {
int[] test = { 3, 5, 8, 10, 21, 23, 35, 42, 67 };
for (int i = 0; i < test.length; i++) {
int ii = test[i];
System.out.println(binarySearch(test, ii-1));
System.out.println(binarySearch(test, ii));
System.out.println(binarySearch(test, ii+1));
}
System.out.println(binarySearch(test, 17));
}
}