Sortieren und Binär suchen mit Java
Wurde ich gebeten, zu Sortieren und durchsuchen eines Arrays. Die Sortierung der array war einfach und mein code funktionierte aber dann immer, wenn ich versuche zu nennen, die binary-search-Methode funktioniert für das erste element im array, sondern gibt mir "-1" als Ergebnis
Mein vollständiger code lautet wie folgt:
public static void main(String[] args) {
int[] array = new int[5];
array[0] = 50;
array[1] = 40;
array[2] = 10;
array[3] = 20;
array[4] = 100;
sort(array, (array.length - 1));
for (int x = 0; x < array.length; x++) {
System.out.println(" " + array[x]);
}
System.out.println("");
System.out.println("Binary search (R): " + rBsearch(array, 0, (array.length), 20));
}
public static void sort(int[] a, int last) {
if (last > 0) {
int max = findMax(a, last);
swap(a, last, max);
sort(a, last - 1);
}
}
public static int rBsearch(int[] L, int low, int high, int k) {
int mid = (low + high) / 2;
if (low > high) {
return -1;
} else if (L[mid] == k) {
return mid;
} else if (L[mid] < k) {
return rBsearch(L, k, mid + 1, high);
} else {
return rBsearch(L, k, low, mid - 1);
}
}
public static int findMax(int[] arr, int last) {
int max = 0;
for (int i = 0; i <= last; i++) {
if (arr[i] > arr[max]) {
max = i;
}
}
return max;
}
public static void swap(int[] arr, int last, int max) {
int temp = arr[last];
arr[last] = arr[max];
arr[max] = temp;
}
- Haben Sie einen Blick auf Ihre
rBsearch
- Methode - wie Sie Aussehen, mischen Grenzen und Schlüssel in der Rekursion nennt. Vielleicht fügen Sie eineprintln
zu sehen, was tatsächlich geschieht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du patzte die binäre Suche Intervallen
Hast du einen Fehler bei dem aufrufen der rBsearch Methode in den folgenden Zeilen
Statt
Sollten Sie verwenden
Einfachste Weg ist:
Konvertieren Sie die array-Liste:
Arrays.asList(array)
Für Art:
Collections#sort
Suche:
Collections#binarySearch
Sehen diese
dann Suche Element unter Verwendung der Binären Suche....
Ergebnis der binarysearch-Methode