MergeSort Laufzeit Problem

Xeno1987

Mitglied
Hallo, ich soll ein Programm schreiben welches den MergeSort algo als generic behandeln soll.

Wir sollen die Klasse Abstract Sort verwenden:

Java:
//
// Abstrakte Klasse der Sortierklassen
//


public abstract class Sort <T extends Comparable<T>> {

  //
  // sort sortiert das Feld a.
  //
  public abstract void sort(T[] a);

}

Merge:

Java:
public class DC <T extends Comparable<T>> extends Sort<T>{





   public void sort(T[] a){

      Comparable[] tmp = new Comparable[a.length];
      reksort(a,tmp,0,a.length-1);
   }
   
   private void reksort(T[] a, Comparable[] tmp, int l, int r){

      if(l<r){

         int center = (l+r)/2;
         reksort(a,tmp,l,r);
         reksort(a,tmp,center+1,r);
         fuse(a,tmp,l,center+1,r);

      }

   }
   
   private void fuse(T[] a, Comparable[] tmp, int lpos, int rpos, int rend){

      int lend = rpos-1;
      int tmppos = lpos;
      int elements = rend-lpos+1;
      
      while(lpos <= lend && rpos <= rend){

         if(a[lpos].compareTo(a[rpos])<=0)
            tmp[tmppos++] = a[lpos++];
         else
            tmp[tmppos++] = a[rpos++];

      }
      
      while(lpos <= lend){

         tmp[tmppos++] = a[lpos++];

      }
      
      while(rpos<=rend){

         tmp[tmppos++] = a[rpos++];

      }
      
      for(int i = 0; i<elements;i++, rend--){

         a[rend] = (T)tmp[rend];


      }

   }

}

Main:

Java:
public class Main {



   public static void main(String[] args){

      DC<Integer> test = new DC<Integer>();

      Integer[] a = {22,21,33,11,5,3,7};



      test.sort(a);


   }
   
}

Das Problem ist auf der konsole gibt der nur at line 20 raus?
 
Java:
reksort(a,tmp,l,r);
a, tmp, l und r ändern sicht nicht. Du rufst die Methode unendlich oft mit den selben Parametern auf.
 

Zurück
Oben