C中的计数排序-输出和计数数组的问题

C中的计数排序-输出和计数数组的问题,c,counting-sort,C,Counting Sort,我正在尝试用C语言为uni实现计数排序算法。这项任务非常简单,因为我们得到了伪代码来翻译成c代码。但不知怎的,我的计数数组和输出数组都疯了。但我看不到我在哪里写了我不应该写的索引,或者哪里有内存故障 编辑:控制台显示以下内容 Unsortiertes Array:(print input_array) 90 38 42 34 8 0 77 1 84 5 25 72 44 42 90 63 23 (print count_array) -363607072 32766 233318081 1 1

我正在尝试用C语言为uni实现计数排序算法。这项任务非常简单,因为我们得到了伪代码来翻译成c代码。但不知怎的,我的
计数数组
输出数组
都疯了。但我看不到我在哪里写了我不应该写的索引,或者哪里有内存故障

编辑:控制台显示以下内容

Unsortiertes Array:(print input_array) 90 38 42 34 8 0 77 1 84 5 25 72 44 42 90 63 23

(print count_array) -363607072 32766 233318081 1 1 0 0 0 -363606696 32766 -363606200 32766 1805418521 32767 13 0 0

Sortiertes Array: print output_array) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
我做错了什么?我认为这是
输出_数组[k]=j
count\u sort\u write\u output\u array
中,但是当我在互联网上查找其他计数排序算法时,它应该是这样写的,还是不应该

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

int MAX_LAENGE = 1000;
int MAX_VALUE = 100;
int j, i, k;


void count_sort_calculate_counts(int input_array[], int len, int count_array[]) {
    for (j = 0; j < len; j++) {
        count_array[input_array[j]] = count_array[input_array[j]] + 1;
    }
}

void count_sort_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 = k + 1;
        }
    }
}



int main(int argc, char *argv[]) {

    if (argc < 2){
        printf("Aufruf: %s <Dateiname>\n", argv[0]);
        printf("Beispiel: %s zahlen.txt\n", argv[0]);
        exit(1);
    }

    char *filename = argv[1];

    int input_array[MAX_LAENGE];
    int len = read_array_from_file(input_array, MAX_LAENGE, filename);

    printf("Unsortiertes Array:");
    print_array(input_array, len);

     int count_array[MAX_LAENGE];
     // print_array(count_array, len);
     int output_array[MAX_LAENGE];
     count_sort_calculate_counts(input_array, len, count_array);
     count_sort_write_output_array(output_array, len, count_array);

    printf("Sortiertes Array:");

    print_array(output_array, len);

    return 0;
}
#包括
#包括
#包括“arrayio.h”
int MAX_LAENGE=1000;
int MAX_值=100;
int j,i,k;
无效计数\排序\计算\计数(整数输入\数组[],整数长度,整数计数\数组[]){
对于(j=0;j
也许您应该通过这种方式将整个count_数组初始化为零,将
i
j
k
作为全局变量,作为定义迭代变量的一种方法,通常是一个坏主意。在未来的某一天,您将有一个子程序调用另一个子程序,这两个子程序都在使用它们,而内部子程序将损坏外部子程序。显示
print\u array()
将有所帮助!