Counting sort
// main.c
#include <stdio.h>
#include <stdlib.h>
#include "counting.h"
int Find_Max(int *A,int size)
{
int i;
int max = A[0];
for(i=0; i< size; i++)
{
// printf("A[%d] = %d\n",i,A[i]);
if(A[i]>max)
max = A[i];
}
return max;
}
int main(int argc, char* argv[])
{
int *A, *B;
int i,max;
srand(time(0));
if(atoi(argv[1]) == 0)
{
printf("\nInserire un numero intero non negativo MAX 15\n");
exit(1);
}
else
if(atoi(argv[1]) > 15 )
{
printf("\nInserire un numero intero non negativo MAX 15\n");
exit(1);
}
A = (int*)malloc(sizeof(int)*atoi(argv[1]));
printf("\nVettore A: |");
for(i=0;i<atoi(argv[1]);i++)
{
A[i] = rand() %atoi(argv[1]);
printf(" %2d |",A[i]);
}
printf("\n");
max = Find_Max(A,atoi(argv[1]));
// printf("MAX %d \n",max);
B = (int *)malloc(sizeof(int)*atoi(argv[1]));
Counting_Sort(A,atoi(argv[1]),B,max);
free(A); free(B);
return 0;
}
Sto studiando questo codice che realizza il Counting sort. Volevo chiedere la variabile ATOI da dove arriva dato che non è stata dichiarata da nessuna parte!
Grazie mille.
Risposte
atoi è una funzione dichiarata in stdlib e non una variabile. Riceve infatti sempre come argomento argv[1]. Peraltro è un pessimo codice: atoi(argv[1]) viene calcolato in continuazione nonostante sia evidentemente costante (argv[1] rimane costante per tutto il codice). Sarebbe stato senza dubbio meglio memorizzarlo in una variabile e poi usare questa nel resto del codice.