/** Diese Klasse stellt Suchalgorithmen f�r eindimensionale Felder mit Zeichen als Elementen bereit. Ausserdem bietet sie Basis-Methoden zur Behandlung von Feldern wie Zugriff auf ein Element, Groesse des Feldes und Vertauschen zweier Elemente. */ public class SearchArray { protected char[] arr; //Konstruktoren public SearchArray() {} public SearchArray(char[] a) {arr = a; } /** Diese Methode gibt das Element zur�ck, das unter dem gegebenen Index gehalten wird. Nicht robust! Aber Felder in Java loesen automatisch Fehler aus bei Ueberschreiten der Feldgrenzen. */ public char elementAt(int i) { return arr[i]; } /** Diese Methode bestimmt die Groesse des Feldes. */ public int size() { return arr.length; } /** Diese Methode vertauscht arr[i] und arr[j]. */ public void tausche (int i, int j) { char hilf = arr[i]; arr[i] = arr[j]; arr[j] = hilf; } /** Diese Methode sucht in dem ein-dimensionalen Feld arr[left..arr.length-1] einen Index mit einem minimalen Elementwert. */ public int minSearch(int left) { int minIndex = left; for(int i = left+1; i < arr.length; i++) { if (arr[i] < arr[minIndex]) minIndex = i; } return minIndex; } /** Diese Methode sucht in einem GEORDNETEN ein-dimensionalen Feld nach einem gegebenen Element. */ public boolean binSearch(char e) { int left = 0, right = arr.length; int mid; boolean found = false; while((left<=right) & !found) { mid = (left+right)/2; //Berechnung des Mittelwerts //(ganzzahlige Division!) if (e < arr[mid]) right = mid-1; //e in der unteren H�lfte else if (e > arr[mid]) left = mid+1; //e in der oberen H�lfte else found = true; //e=a[mid], d.h. e gefunden } return found; } }