bräuchte hilfe bei Binärsuche - Wenn die Zahl nicht im Array ist -> Fehler

axid

Grünschnabel
Hallo Leute!
Ich muss eine Binärsuche machen und habs endlich geschafft (rekursiv - muss aber ned sein)
Das einzige Problem ist, wenn ich eine nicht vorhande Zahl eingebe bekomme ich ne mörder lange Fehlermsg und einen StackOverflowError.
Ich weiss warum der kommt, da ja nicht überprüft wird ob die Zahl da ist. Aber irgendwie muss das ja gehen oder?

Anbei der Code:
Code:
public class test
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        int[] zahl =
        { 1, 3, 5, 7, 9, 10, 13 , 51, 103,1111,4444,33333};
        int gesucht = 113;

        binaersuche.suche(zahl, gesucht, 0, (zahl.length / 2), zahl.length);
    }

}



und

Code:
public class binaersuche
{
    static int durchlaufanzahl = 0;

    public final static void suche(int[] zahl, int gesucht, int anfang,
            int mitte, int ende)
    {
        if (gesucht <= zahl[zahl.length - 1])
        {
            if (gesucht == zahl[mitte] && anfang <= zahl.length)
            {
                System.out.println("Zahl " + zahl[mitte] + " Gefunden");
                System.out.println("Es hat " + (durchlaufanzahl + 1)
                        + " Durchläufe gebraucht");
                System.exit(0);
            }
            if (gesucht < zahl[mitte] && anfang <= zahl.length)
            {
                ende = mitte;
                mitte = ende / 2;
                suche(zahl, gesucht, anfang, mitte, ende);
            }
            if (gesucht > zahl[mitte] && anfang <= zahl.length)
            {
                int mitte2 = (((ende - mitte) / 2) + mitte);
                suche(zahl, gesucht, anfang, mitte2, ende);
            }
        }
        else
        {
            System.out.println("Es keine dementsprechende Zahl gefunden");
        }

    }
}
 
Zurück