Merge-Sort Algorithmus
-
Brauche einen Mergesort-Algorithmus der Zahlen eines Arrays der Größe nach sortiert!
(zb.: array[] = {5,6,2,9,1,6,3,6,2,7})es muss unbedingt ein mergesort sein, bubblesort, quicksort oder ähnliches darf nicht verwendet werden!
-
Ja, und?
-
-
also irgendwie sortiert es dir das schon hin
int main(void){
int i;
int swapBuffer;
int swapped = 1;
int a[] = {5,6,2,9,1,6,3,6,2,7,45,877,4};
int l = sizeof(a)/sizeof(int);if(l&0x1)
l--;while(swapped){
swapped=0;
for(i=0;i<l;){
if(a[i] > a[i+1]){
swapBuffer = a[i];
a[i] = a[i+1];
a[i+1] = swapBuffer;
swapped = 1;
}
i+=2;
}for(i=0;i<l-2;){
if(a[i] > a[i+2]){
swapBuffer = a[i];
a[i] = a[i+2];
a[i+2] = swapBuffer;
swapped = 1;
}
i+=1;
}for(i=1;i<l;){
if(a[i] > a[i+1]){
swapBuffer = a[i];
a[i] = a[i+1];
a[i+1] = swapBuffer;
swapped = 1;
}
i+=2;
}
}
for(i=0;i<=l;i++)
printf("%d\n",a[i]);
return 1;
}
-
ups
int main(void){ int i; int swapBuffer; int swapped = 1; int a[] = {5,6,2,9,1,6,3,6,2,7,45,877,4}; int l = sizeof(a)/sizeof(int); if(l&0x1) l--; while(swapped){ swapped=0; for(i=0;i<l;){ if(a[i] > a[i+1]){ swapBuffer = a[i]; a[i] = a[i+1]; a[i+1] = swapBuffer; swapped = 1; } i+=2; } for(i=0;i<l-2;){ if(a[i] > a[i+2]){ swapBuffer = a[i]; a[i] = a[i+2]; a[i+2] = swapBuffer; swapped = 1; } i+=1; } for(i=1;i<l;){ if(a[i] > a[i+1]){ swapBuffer = a[i]; a[i] = a[i+1]; a[i+1] = swapBuffer; swapped = 1; } i+=2; } } for(i=0;i<=l;i++) printf("%d\n",a[i]); return 1; }
-
Danke für die Antwort!