이 대기열 기반 기수 정렬을 작동 시키려고하는데이 배열의 잘못된 점을 파악할 수 없습니다. 그것은 입력 매체로 텍스트 파일을 사용하고 그것을 컴파일하려고하면 텍스트 파일과 함께 그것을 실행하려고하면 톤의 오류를 던졌습니다.(C) Radix 텍스트 파일의 배열 정렬
이 시점에서 조언이 도움이 될 것입니다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SHOWPASS
//Compiled Using GNU GCC Compiler
void radixsort(int *a[], int n)
{
int i, b[MAX], m = *a[0], exp = 1;
for (i = 0; i < n; i++)
{
if (*a[i] > m)
m = a[i];
}
while (m/exp > 0)
{
int queue[10] =
{ 0 };
for (i = 0; i < n; i++)
queue[*a[i]/exp % 10]++;
for (i = 1; i < 10; i++)
queue[i] += queue[i - 1];
for (i = n - 1; i >= 0; i--)
b[--queue[*a[i]/exp % 10]] = *a[i];
for (i = 0; i < n; i++)
*a[i] = b[i];
exp *= 10;
#ifdef SHOWPASS
printf("\nPASS : ");
radixsort(a, n);
#endif
}
}
int main(int argc, char *argv[])
{
if (argc != 3)
{
printf("Need two input parameters in the following order: \n 1. Input file path \n 2. Number of elements in file\n");
return 0;
}
int num_elements = atoi(argv[2]);
int *input_arr = (int*) calloc (num_elements, sizeof(int));
int i;
FILE *fin; //File pointer to read input file
fin = fopen(argv[1], "r"); //Initialize file pointer
for(i=0; i<num_elements; i++)
{
fscanf(fin, "%d", &(input_arr[0]));
}
radixsort(input_arr[0], i);
printf ("\nArray before sorting: \n") ;
for (i = 0 ; i < num_elements ; i++)
printf ("%d\t", input_arr[0]) ;
printf ("\n\n");
return 0;enter code here
}
'의 printf ("% d 개 \의 t"input_arr [0]); '// 0 : 이것은 완전한 실행 코드 고정 값 – BLUEPIXY