2017-06-07 1 views
-4

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++; 
    } 


    } 


} 
+0

« 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

+1

Votre code ne compile même pas, alors qu'attendez-vous de nous? Devinez le code que vous utilisez vraiment? – Tom

+0

votre ligne 'int mid = mid + (high-low)/2;' ne devrait même pas compiler. – Nathan

Répondre

-4

Il est dû à une mauvaise condition de base qui pourraient être à l'origine des boucles infinies comme condition dans votre programme ... s'il vous plaît déboguer

+0

Cela devrait être un commentaire. Pas une réponse. –