Dodałem ten algorytm rekursywny BubbleSort do mojej gry, która działa na lwjgl. Próbuję posortować ArrayList obiektów "Cloud" przez float, który jest prędkością tej chmury.BubbleSort StackOverflowError
Z jakiegoś powodu czasami otrzymuję "java.lang.StackOverflowError" w wierszu, w którym sam wywołuję metodę.
Oto kod:
public void sort() {
for (int i = 0; i < clouds.size() - 1; i++) {
Cloud cl1 = clouds.get(i);
Cloud cl2 = clouds.get(i + 1);
if (cl1.getSpeed() < cl2.getSpeed()) {
continue;
}
clouds.set(i, cl2);
clouds.set(i+1, cl1);
this.sort();
}
}
I tu są błędy Dostaję:
Sat May 04 20:28:45 CEST 2013 ERROR:null
java.lang.StackOverflowError
at backgrounds.Clouds.sort(Clouds.java:224)
[...] // The line above is repeated for some hundred times.
Polecam implementację porównywalną w klasie Cloud, korzystasz z kolekcji do przechowywania chmur, które wydaje (.size), więc Collectionssort() zajmie się tym za ciebie. Wymyślanie własnych metod jest jednak zabawne;) – arynaq