Sortowanie bąbelkowe

0

Witam napisałem taki krótki programik dla praktyki (ciągle się uczę):


public class Main {

    public static void main(String[] args) {
        int[] table = {9, 6, 2, 3, 8, 1, 4, 7, 5, 9, 15, 21, 698, 2, 7};

        Sortable sort = new Sortable() {
            public int[] sort(int[] table) {
                boolean does = true;
                int i = 0;
                int length = table.length - 1;

                while (does) {
                    if (i == length) {
                        i = 0;
                        length--;
                        continue;
                    }else if(length == 0) {
                        does = false;
                        continue;
                    }else if (table[i] > table[i+1]){
                        int temporary;
                        temporary = table[i];
                        table[i] = table[i+1];
                        table[i+1] = temporary;
                        i++;
                        continue;
                    } else {
                        i++;

                    }   
                }
                return table;
            }
        };

        System.out.println("Posortawana tablica: ");
        for (int s: sort.sort(table)) {
            System.out.print(s + " ");
        }
    }

}

Interface:


public interface Sortable {

    public int[] sort(int[] table);

}

I moje pytanko brzmi:

W tym fragmencie "else if(length == 0)" jak użyłem 0 to wyskakuje błąd ArrayOutOfBoundsException. Ale jak użyje 1 to wszystko działa poprawnie, tylko dlaczego, wg. mnie z 0 powinno wszystko śmigać, ktoś pomoże?

0

Masz, źle napisany algorytm. Zauważ, że jak podasz np. pustą tablicę to wywali Ci się w tej linijce: else if (table[i] > table[i+1]). Odpal sobie to pod debuggerem i będziesz wiedział co jest nie tak :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0