Ich möchte ein Programm schreiben, dass ein Array mit Count Sort sortieren soll. Doch habe ich einen Fehler. Meine Eingabe für das unsortierte Array war:
38 38 19 57 0 18 59 27 18 57 19 47 4 2 5 5 1 1
Aber als Ausgabe bekam ich bloß:
0 1 1 2 4 5 5 0 0 0 0 0 0 0 0 0 0 0
Für dieses Programm sind besonders 2 Funktionen wichtig und ich denke, dass in einen der Beiden mein Fehler ist. Hier ist meine erste Funktion fürs Zählen:
void count(int input_array[], int len, int count_array[])
{
for (i=0; i < len; i++)
{
count_array[i] = 0;
}
for (j=0; j<len;j++)
{
count_array[input_array[j]]++;
}
}
Meine erste For-schleife soll sagen, dass count_array min. 38 Stellen lang sein soll und soll überall mit 0 initialisierst werden. "len" steht für Länge und ist 38.
Die zweite for-Schleife soll das eigentliche Nachzählen tun. zBs. bei j=1 sollte die for-Schleife also im output_array eine 38 finden. Also soll count_array bei der Stelle 38 um eins erhöhen. Das gleiche mit j=2 usw.
Und meine zweite Funktion soll nun das output Array schreiben, welches richtig sortiert ist. k ist der Index im output_array. k ist der Index. Die erste for-Schleife soll das count_array durchgehen und die zweite for-Schleife soll das schreiben der Zahl so oft wiederholen, wie häufig diese gefunden wurde.
void write_output_array(int output_array[], int len, int count_array[])
{
k=0;
for (j=0; j < len; j++)
{
for (i=0; i < count_array[j]; i++)
{
output_array[k] = j;
k++;
}
}
}
Hat jemand eine Idee warum write_output_array wohl früher endet als gewollt?