Witam
Zakodziłem w C algorytm counting sort i niby działa tylko jeśli próbuje wywołać program dla danych o większych wartościach to się zawiesza. Może ktos wie co jest tutaj nie tak?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int i,n,b,*tab_we,*tab_wy,*tab_pom;
int main()
{
double czas;
clock_t start,end;
scanf("%d",&n);
tab_we=malloc(n*sizeof(*tab_we));
tab_wy=malloc(n*sizeof(*tab_wy));
for (i=1;i<=n;i++)
{
scanf("%d",&tab_we[i]);
if (b<tab_we[i]) b=tab_we[i];
}
tab_pom=malloc(b*sizeof(*tab_pom));
for (i=1;i<=b;i++) tab_pom[i]=0;
//Sortowanie
start=clock();
for (i=1;i<=n;i++) tab_pom[tab_we[i]]++;
for (i=2;i<=b;i++) tab_pom[i]+=tab_pom[i-1];
for (i=n;i>=1;i--)
{
tab_wy[tab_pom[tab_we[i]]]=tab_we[i];
tab_pom[tab_we[i]]--;
}
end=clock();
//Koniec sortowania
czas=(end-start)/(double)CLK_TCK;
printf("%f\n",czas);
if (n<11)
{
for (i=1;i<=n;i++) printf("%d, ",tab_we[i]);
printf("\n");
for (i=1;i<=n;i++) printf("%d, ",tab_wy[i]);
}
free(*tab_we);
free(*tab_wy);
free(tab_pom);
return 0;
}