|
Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.
Beispiel
mergesort.java public static int [] mergesort (int list[]){
int listlength = list.length;
int sortlist[] = list;
// aufteilen der liste wenn mehr als ein element in der liste
if (list.length>1){
int leftlist[] = new int [listlength/2];
int rightlist[]= new int [listlength-leftlist.length];
// befüllen der linken liste
System. arraycopy(list, 0, leftlist, 0, leftlist. length);
// befüllen der rechten liste
System. arraycopy(list, leftlist. length, rightlist, 0, rightlist. length);
// mischen der sortierten liste
sortlist = merge(mergesort(leftlist),mergesort(rightlist));
}
return sortlist;
}
private static int [] merge(int l[], int r[]){
int mergelist[] = new int [l.length+r.length];
int mlvar=0; //laufvariable für die gemischte liste
int llvar=0; //laufvariable für die linke liste
int rlvar=0; //laufvariable für die rechte liste
while(llvar<l.length && rlvar<r.length){
if(l[llvar]<=r[rlvar]){
mergelist[mlvar]=l[llvar];
llvar++;
mlvar++;
}else{
mergelist[mlvar]=r[rlvar];
rlvar++;
mlvar++;
}
}
while(llvar<l.length){
mergelist[mlvar]=l[llvar];
llvar++;
mlvar++;
}
while(rlvar<r.length){
mergelist[mlvar]=r[rlvar];
rlvar++;
mlvar++;
}
return mergelist;
}
|