Moin!
Als Java-Einsteiger habe ich mich in meinem Unikurs gerade damit auseinandergesetzt, die Programmiersprache zu lernen. Da ich aktuell nicht weiterkomme, bin ich auf dieses Forum gestoßen und werde hier sicherlich in der nächsten Zeit noch etwas rumstöbern und mir Anregungen holen.
Zunächst einmal habe ich (wie wohl jeder Einsteiger) mich an der binären Suche versucht, die mein Übungsbuch vorschlägt. Diese soll innerhalb eines Arrays von 0-9 die gesuchte Zahl finden (Konsole).
Das klappt auch soweit ganz gut, solange es sich um Zahlen zwischen 1 und 8 handelt, die 0 und die 9 wird nicht gefunden und ich frage mich, warum das der Fall ist. Könnt ihr mir da weiterhelfen?
Als Java-Einsteiger habe ich mich in meinem Unikurs gerade damit auseinandergesetzt, die Programmiersprache zu lernen. Da ich aktuell nicht weiterkomme, bin ich auf dieses Forum gestoßen und werde hier sicherlich in der nächsten Zeit noch etwas rumstöbern und mir Anregungen holen.
Zunächst einmal habe ich (wie wohl jeder Einsteiger) mich an der binären Suche versucht, die mein Übungsbuch vorschlägt. Diese soll innerhalb eines Arrays von 0-9 die gesuchte Zahl finden (Konsole).
Das klappt auch soweit ganz gut, solange es sich um Zahlen zwischen 1 und 8 handelt, die 0 und die 9 wird nicht gefunden und ich frage mich, warum das der Fall ist. Könnt ihr mir da weiterhelfen?
Java:
package binaereSuche;
@SuppressWarnings( "javadoc" )
public class BinaereSuche {
public static void main( String[] args ) {
int[] array = new int[10];
for ( int i = 0; i < 10; i++ ) {
array[i] = i;
}
for ( int i : array ) {
System.out.println( i );
}
int gesucht = 9; // gesuchte Zahl
int anzahl = 10; // Anzahl der Zahlen
int mitte = 0;
int unten = 0;
int oben = array.length - 1;
int durchlaeufe = 0;
boolean gefunden = false;
System.out.println( "Anzahl = " + anzahl );
System.out.println( "Gesucht = " + gesucht );
System.out.println( "Mitte = " + mitte );
System.out.println( "Oben = " + oben);
System.out.println( " unten = " + unten);
while ( gefunden != true && ( oben - unten ) > 1 ) { // Abbruchbedingung
mitte = ( int ) ( ( oben - unten ) / 2 + unten );
System.out.println( "Aktuelles Element = " + array[mitte] );
durchlaeufe++;
if ( array[mitte] == gesucht ) {
gefunden = true;
System.out.println( "Gesuchtes Element " + gesucht + " ist Element " + mitte );
System.out.println( "Benötigte Durchläufe: " + durchlaeufe );
break;
}
if ( array[mitte] < gesucht ) {
unten = mitte;
System.out.println( "IF-Zweig - neues Mitte: " + mitte );
}
else {
oben = mitte;
System.out.println( "ELSE-Zweig - neues Mitte: " + mitte );
}
}
if ( !( ( oben - unten ) > 1 ) ) System.out.println( "Gesuchtes Element nicht gefunden!" );
}
}