Count Sort Funktion geht zu früh aus der Schleife?

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?

Computer, programmieren, CC, Informatik, C (Programmiersprache), Sortieralgorithmus
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.