#include "bucket.h" void MergeSort(Bucket *liste[], int groesse){ if(groesse > 1){ Bucket *haelfte1[groesse/2]; Bucket *haelfte2[(groesse + 1)/2]; int i; for(i = 0; i < groesse/2; ++i) haelfte1[i] = liste[i]; for(i = groesse/2; i < groesse; ++i) haelfte2[i - groesse/2] = liste[i]; MergeSort(haelfte1,groesse/2); MergeSort(haelfte2,(groesse + 1)/2); Bucket **pos1 = &haelfte1[0]; Bucket **pos2 = &haelfte2[0]; for(i = 0; i < groesse; ++i){ if((*pos1)->depth <= (*pos2)->depth){ liste[i] = *pos1; if (pos1 != &haelfte2[(groesse+1)/2 - 1]) { // pos1 nicht verändern, wenn der größte Wert mehrmals vorkommt if(pos1 == &haelfte1[groesse/2 - 1]){ pos1 = &haelfte2[(groesse+1)/2 - 1]; } else{ ++pos1; } } } else{ liste[i] = *pos2; if(pos2 == &haelfte2[(groesse + 1)/2 - 1]){ pos2 = &haelfte1[groesse/2 - 1]; } else{ ++pos2; } } } } }