PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Implementierung der Fkt. MSort/MergeSort


Klaus1980
19.05.2002, 18:23
Hi,

soweit hab ich das Programm nun mal geschrieben. Hab ich grösstenteils aus meinem Script. Läuft aber net.

#include <stdio.h>
#include <stdlib.h>

#define groesse 100

void MSort(int Array[],int MergeArray[], int ArraySize);
void MergeSort(int Array[], int ArraySize );

int main ()

{

int Array[groesse];
int i;
int n=0;

printf(&quot;Wieviele Zahlen moechten Sie eingeben ?&quot;);
scanf(&quot;%d&quot;,&n);

for(i=0;i<n;i++)
{
printf(&quot;Bitte geben Sie ihre %d. Zahl ein: &quot;,i+1);
scanf(&quot;%d&quot;,&Array[i]);
}

void MSort(int Array[],int MergeArray[], int ArraySize); // Aufruf der Funktion MSort


printf(&quot;Sie haben die folgenden Zahlen eingegeben:&quot;);
for(i=0;i<n;i++)

{
printf(&quot;%d &quot;,Array[i]);

}
printf(&quot;\n&quot;);

return 0;
}

// Funktion zum Sortieren

void MSort(int Array[],int MergeArray[], int ArraySize)
{
if(ArraySize>1)
{
MSort(Array,MergeArray,ArraySize/2);
MSort(Array+ArraySize/2,MergeArray,ArraySize-ArraySize/2);
MergeSort(Array,MergeArray,ArraySize);
}

}


void MergeSort(int Array[], int ArraySize )
{
int *MergeArray;
MergeArray=(int*) malloc(sizeof(int) * ArraySize);
MSort(Array,MergeArray,ArraySize);
free(MergeArray);

}


Bekannte Fehler:

1.was muss ich bei welcher der Funktionen zurückgeben ?
2. Ich ruf die Funktion MergeSort mit 3 Parameter auf, aber die Fkt. akzeptiert nur 2. Was tun ? Sind alle 3 nötig ?


Kann jemand mir kurz helfen damit ich das zum laufen bekomme oder mir ne korrekte CodeBlock der Fkt. MSort/MergeSort posten.
Die Funktion ist ja relativ bekannt.

mfg klaus1980


DerWolf
21.05.2002, 19:07
Hi, hier findest du ne genaue erklärung des algorithmus:
http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/sortalgo.htm

cu