import algds.IOUtils;
public class aufgabe21 {

    /* Prinzip des binären Suchen wie in Aufgabe 20,
    /* nur das hier die Zeichenkette mit Hilfe des Befehls 
    /* compareTo lexikographisch verglichen werden.  
    /* Der Vergleich liefert ein int-Wert aus
    /* wenn der Wert 0 ist sind die Strings identisch
    /* wenn der Wert positiv ist steht das Stringobjekt,
    /* hier der Suchwert weiter hinten (ist also ""größer")
    /* wir können deshalb die linke Grenze zur Mitte ziehen,
    /* analog gilt wenn der Wert negativ ist, also
    /* der Suchwert vor m und r=m-1 */
    
    public static boolean binSearch (String feldStr[], String suchwert)
    {
        int l=0;
        int r=feldStr.length-1;
        while (l<=r) {
            int m = (l+r)/2;
            System.out.print(" l : "+l+" m : "+m+" r : "+r);
            System.out.println(" Vergleichswert : "+suchwert.compareTo(feldStr[m]));
            if ((suchwert.compareTo(feldStr[m]))<0)
            r = m-1;
            else
            if ((suchwert.compareTo(feldStr[m]))>0)  
            l = m+1;
            else
            return true;  //
        }
        return false;
    }

public static void main(String[] args)
{
    String  suchwert;
String[]feldStr={"Alfons","Andrea","Berta","Berti","Detlef","Matthias","Susi","Thomas"};
    for (int i=0; i<feldStr.length;i++)
    System.out.print(feldStr[i]+" , ");
    System.out.println();
    System.out.print("Wert nach dem sie suchen wollen : ");
    suchwert = IOUtils.readString();
    System.out.println (suchwert);
    if (binSearch(feldStr,suchwert)==true)
    System.out.println(" gefunden ");
    else
    System.out.println("nicht gefunden");
}
}