bissl effizienter, sprites kaputt bruh, komische bug ich weiß net weiter :(, ich merge hier den main mal drauf, mal schauen was passiert
parent
8152651c99
commit
3c4d737199
@ -1,43 +1,43 @@
|
|||||||
#include "bucket.h"
|
#include "bucket.h"
|
||||||
|
|
||||||
void MergeSort(Bucket *liste[], int groesse){
|
void MergeSort(Bucket *liste[], int groesse){
|
||||||
|
|
||||||
if(groesse > 1){
|
if(groesse > 1){
|
||||||
|
|
||||||
Bucket *haelfte1[groesse/2];
|
Bucket *haelfte1[groesse/2];
|
||||||
Bucket *haelfte2[(groesse + 1)/2];
|
Bucket *haelfte2[(groesse + 1)/2];
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i < groesse/2; ++i)
|
for(i = 0; i < groesse/2; ++i)
|
||||||
haelfte1[i] = liste[i];
|
haelfte1[i] = liste[i];
|
||||||
for(i = groesse/2; i < groesse; ++i)
|
for(i = groesse/2; i < groesse; ++i)
|
||||||
haelfte2[i - groesse/2] = liste[i];
|
haelfte2[i - groesse/2] = liste[i];
|
||||||
|
|
||||||
MergeSort(haelfte1,groesse/2);
|
MergeSort(haelfte1,groesse/2);
|
||||||
MergeSort(haelfte2,(groesse + 1)/2);
|
MergeSort(haelfte2,(groesse + 1)/2);
|
||||||
|
|
||||||
Bucket **pos1 = &haelfte1[0];
|
Bucket **pos1 = &haelfte1[0];
|
||||||
Bucket **pos2 = &haelfte2[0];
|
Bucket **pos2 = &haelfte2[0];
|
||||||
for(i = 0; i < groesse; ++i){
|
for(i = 0; i < groesse; ++i){
|
||||||
if((*pos1)->depth <= (*pos2)->depth){
|
if((*pos1)->depth <= (*pos2)->depth){
|
||||||
liste[i] = *pos1;
|
liste[i] = *pos1;
|
||||||
if (pos1 != &haelfte2[(groesse+1)/2 - 1]) { // pos1 nicht verändern, wenn der größte Wert mehrmals vorkommt
|
if (pos1 != &haelfte2[(groesse+1)/2 - 1]) { // pos1 nicht verändern, wenn der größte Wert mehrmals vorkommt
|
||||||
if(pos1 == &haelfte1[groesse/2 - 1]){
|
if(pos1 == &haelfte1[groesse/2 - 1]){
|
||||||
pos1 = &haelfte2[(groesse+1)/2 - 1];
|
pos1 = &haelfte2[(groesse+1)/2 - 1];
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
++pos1;
|
++pos1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
liste[i] = *pos2;
|
liste[i] = *pos2;
|
||||||
if(pos2 == &haelfte2[(groesse + 1)/2 - 1]){
|
if(pos2 == &haelfte2[(groesse + 1)/2 - 1]){
|
||||||
pos2 = &haelfte1[groesse/2 - 1];
|
pos2 = &haelfte1[groesse/2 - 1];
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
++pos2;
|
++pos2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue