000
19.05.2004, 16:18 Uhr
~Banggart
Gast
|
Ich habe ein Problem mit der Implementierung von MergeSort. Das ist der Code für das aufteilen
C++: |
void MSort(int Array[], int MergeArray[], int ArraySize) { if (ArraySize > 1) { MSort(Array, MergeArray, ArraySize/2); MSort(Array+ArraySize/2, MergeArray, ArraySize - ArraySize/2); Merge(Array,MergeArray,ArraySize); } }
|
In Array stehen die zusortierenden Zahlen, MergeArray ist ein Hilfsarray. Das funktioniert auch soweit. Probleme habe ich mit dem eingentlichen Merge.
C++: |
void Merge(int Array[],int MergeArray[], int ArraySize) { int i, links=0, rechts=ArraySize/2;
for(i=0;i<ArraySize;i++) MergeArray[i]=Array[i]; for(i=0;i<ArraySize;i++) { if(MergeArray[links]<=MergeArray[rechts]){ Array[i]=MergeArray[links]; links++; } else{ Array[i]=MergeArray[rechts]; rechts++; } } }
|
Es will einfach nicht klappen. Die ersten 3 von 8 zusortierenden Zahlen sind an der richtigen Stelle. Warum der Rest nicht? Kann mir da vielleicht jemand helfen? |