Je reçois "Exception dans le fil" principal "java.lang.StackOverflowError" dans mon programme de mergesort.Peut-on m'aider avec celui-là.Je reçois "Exception dans le fil" principal "java.lang.StackOverflowError" dans mon programme mergesort
Je ne comprends pas où cela se passe. Une aide rapide sera appréciée.
import java.util.*;
class Test {
int []array;
int []marr;
int length;
public static void main(String[] args) {
int size=6;
int [] arr={12,3,55,1,6,2};
Test ob=new Test();
ob.sort(arr);
for(int x=0;x<size;x++)
{
System.out.println(arr[x]);
}
}
public void sort(int []arr)
{
this.array=arr;
this.length=arr.length;
this.marr=new int[length];
mergesort(0,length-1);
}
public void mergesort(int low ,int high)
{
if(low<high){
int mid=mid+(high-low)/2;
mergesort(low,mid);
mergesort(mid+1,high);
mergepart(low,mid,high);
}
}
public void mergepart(int low,int mid,int high)
{
for(int d=0;d<high;d++)
{
array[d]=marr[d];
}
int i=low;
int j=mid+1;
int k=low;
while(i<=mid && j<=high)
{
if(marr[i]<=marr[j])
{
array[k]=marr[i];
k++;
i++;
}
else
{
array[k]=marr[j];
k++;
j++;
}
}
while(i<=mid)
{
array[k]=marr[i];
i++;
k++;
}
while(j<=high)
{
array[k]=marr[j];
j++;
k++;
}
}
}
« Je ne reçois pas où il se passe » Eh bien, peut-être votre IDE obtient ? vous devriez avoir une stacktrace indiquant d'où provient l'erreur. – Nathan
Votre code ne compile même pas, alors qu'attendez-vous de nous? Devinez le code que vous utilisez vraiment? – Tom
votre ligne 'int mid = mid + (high-low)/2;' ne devrait même pas compiler. – Nathan