0
私はちょうど数値をソートするためにカウントソートを使用してCのprogrammのために働いています、ここで私のコードです。ライブラリarrayio.hは入力用のコードです。Cでのソートソートは、最初の4つの数字だけをソートすることができます
#include <stdio.h>
#include <stdlib.h>
#include "arrayio.h"
int MAX_LAENGE = 1000;
int MAX_VALUE = 100;
int i,j,k;
void count_sort_calculate_counts(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]] = 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];
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;
}
私の問題は、このプログラムを実行すると、最初の4つの数字だけが返されることです。これは、戻り
90 38 42 34 8 0 77 1 84 5 25 72 44 42 90 63 23
:
0 1 5 8 0 0 0 0 0 0 0 0 0 0 0 0 0
また、count_arrayには「MAX_VALUE」アイテムのみが必要です –