TuH2 java
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<code>
// Eine Hilfe um mal schnell ein Array beliebiger Länge, zu füllen
int[] erzeugeFeld(int length) {
int[] field = new int[length];
for (int i = 0; i < field.length; i++) {
field[i] = i;
}
return field;
}
//Ein Array für Testzwecke
int myArray[] = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
100, 150, 165, 180, 200, 1000, 1500, 1600, 1700, 20000};
// die Sequenzielle Suche für den Vergleich
int sequenzSuch(int[] field, int x){
int element= -1;
for(int i = 0; i < field.length; i++){
if(field[i] == x)
element = i;
}
return element;
}
// Die eigentliche Such Methode, diese Liefert die Position an der das Element zu finden ist,
// das Ergebnis -1 signalisiert das das Element nicht enthalten ist!
int binSuch(int[] field, int x){
int start = 0;
int ende = field.length-1;
int mitte = (start + ende)/2;
while(start <= ende && field[mitte] != x){
if(field[mitte] < x){
start = mitte + 1;
}else ende = mitte - 1;
mitte = (ende + start)/2;
}
if(start > ende){
return -1;
}else return mitte;
}
//Rekursive Variante
int binSuchRek(int [] field, int x, int start, int ende){
int mitte = start + ((ende - start)/ 2);
if(mitte >= field.length){
return -1;
}else if(field[mitte] == x){
return mitte;
}else if(field[mitte] < x ){
return binSuchRek(field, x, mitte + 1, ende);
}else
return binSuchRek(field, x, start, mitte - 1);
}
</code>
<eval>
System.out.println("An welcher Stelle ist das Element zu finden? Position:" + binSuch(erzeugeFeld(10), 3));
</eval>