Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Algorithmen

How To's Informationen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

Mergesort

Beispiel

mergesort.java
  1. public static int [] mergesort (int list[]){
  2.         int listlength = list.length;
  3.         int sortlist[] = list;
  4.         // aufteilen der liste wenn mehr als ein element in der liste
  5.         if (list.length>1){
  6.                 int leftlist[] = new int [listlength/2];
  7.                 int rightlist[]= new int [listlength-leftlist.length];
  8.                 // befüllen der linken liste
  9.                 System.arraycopy(list, 0, leftlist, 0, leftlist.length);
  10.                 // befüllen der rechten liste
  11.                 System.arraycopy(list, leftlist.length, rightlist, 0, rightlist.length);
  12.                 // mischen der sortierten liste
  13.                 sortlist = merge(mergesort(leftlist),mergesort(rightlist));
  14.         }
  15.         return  sortlist;
  16. }
  17.  
  18. private static int [] merge(int l[], int r[]){
  19.         int mergelist[] = new int [l.length+r.length];
  20.         int mlvar=0;    //laufvariable für die gemischte liste
  21.         int llvar=0;    //laufvariable für die linke liste
  22.         int rlvar=0;    //laufvariable für die rechte liste
  23.         while(llvar<l.length && rlvar<r.length){
  24.                 if(l[llvar]<=r[rlvar]){
  25.                         mergelist[mlvar]=l[llvar];
  26.                         llvar++;
  27.                         mlvar++;
  28.                 }else{
  29.                         mergelist[mlvar]=r[rlvar];
  30.                         rlvar++;
  31.                         mlvar++;
  32.                 }
  33.         }
  34.         while(llvar<l.length){
  35.                 mergelist[mlvar]=l[llvar];
  36.                 llvar++;
  37.                 mlvar++;
  38.         }
  39.         while(rlvar<r.length){
  40.                 mergelist[mlvar]=r[rlvar];
  41.                 rlvar++;
  42.                 mlvar++;
  43.         }
  44.         return mergelist;
  45. }
Zuletzt geändert am 27.09.2006 21:35 Uhr
  Impressum