Witam, jestem jeszcze lekko zielony z Javy, a mam do napisania algorytm sortowania MergeSort. Podczas uruchamiania poniższego programu pojawia mi się błąd StackOverflowError i nie mam pojęcia dlaczego tak się dzieje. Możliwe, że sam algorytm sortowania ma gdzieś błąd, ale to na razie jest mniej istotne jak dla mnie. Mógłby ktoś pomóc ?
public class Test {
public static void main(String args[]){
int[] tablica = {6,5,4,3,2,1,0,123,1234};
MergeSort ob1 = new MergeSort();
int[] tab1 = ob1.sortuj(0,8,tablica);
//int k = 9;
//System.out.println(ob1);
for(int i=0;i<tablica.length;i++){
System.out.println(tab1[i]);
}
}
}
public class MergeSort {
static int tabPom[]; // t
static int wynik[];
static void scal(int start,int middle,int stop){
int i = start;
int j = middle +1;
int k = start;
wynik = new int[tabPom.length];
while(i<=middle && j<=stop){
System.out.println("jestem");
if(tabPom[i]<tabPom[j]){
wynik[k] = tabPom[i];
i++;
}
else{
wynik[k]=tabPom[j];
j++;
}
k++;
}
while(i <= middle){
wynik[k] = tabPom[i];
i++;
k++;
}
}
static int[] sortuj(int start,int stop,int tab[]){
tabPom = new int[tab.length];
int middle;
for(int z=0;z<tab.length;z++){
tabPom[z]=tab[z];
}
start =0;
stop = tab.length;
if (start<stop){
middle=(start+stop)/2;
sortuj(start, middle,tab); // Dzielenie lewej części
sortuj(middle+1, stop,tab); // Dzielenie prawej części
scal(start, middle, stop); // Łączenie części lewej i prawej
}
return wynik;
}
}