InsertionSort :(

bRainLaG

Mitglied
Ich muss euch doch nochmal in Beschlag nehmen und ich hoffe es ist wieder nur ein Schusselfehler :(

Java:
public class InsertionSort {

    private int[] array;
    private int l;

    public void sort(int [] array){
        this.array = array;
        l = array.length;
        InsertionSort();
    }


    private void InsertionSort(){

        int i;
        int j;

        for (i = 0; i<array.length;i++); {

            j = i;
            int k = array[j];


            while (j>0 &&  array[j-1] > k) {
             array[j] = array[j-1];
             j--;
             }
            array[j]=k;
        }

    }
}

Wenn ich das ganze nun ausführe bekomme ich
java.lang.ArrayIndexOutOfBoundsException

Das bedeutet das das Array scheinbar überläuft, oder die Länge falsch gewählt ist.
Den Fehler erhalte ich in dieser Zeile int k = array[j]; da ich aber vorher ja nur bis zur maximalen Array Length gehe wie kann ich das überlaufen?
 
Ein Fehler wurd ja schon genannt..

Die Array-Index-OutOfBounds-Exception kommt übrigens wahrscheinlich von Zeile 24, mit dem array[j-1] Bei j=0 willst du auf das -1-te Element des Arrays zugreifen, was nicht geht.

Ansonsten, was auffällt:
In den Zeilen 15/16 definierst du zwei Integer: i und j.
Dann lässt du die for-Schleife für i durchlaufen, um anschließend j den Wert von i zuzuweisen und dann mit j weiterzumachen.
Warum?
"i" würde doch reichen?

Gruß,
Martin
 
Zuletzt bearbeitet:
eigentlich sind es nur 2 kleinigkeiten:
- das ; in Zeile 18 muss weg wie sebastianb schon erwähnt hat
- wenn du mit i=1 in der for-schleife anfängst ist die Exception weg und der Sort funktioniert immernoch ;)
 
Zurück