10{
11 long int n, m, i, j, k, car[
M], ind[
M], ind2;
12 float X[
N],
max,
min, aux, rg[
M], rng_int, Y[
N];
13 srand(time(NULL));
14 do{
15 printf("Ingrese el numero de elementos: ");
16 scanf("%ld", &n);
18 printf("Ingrese le valor maximo: ");
20 printf("Ingrese el valor minimo: ");
23 {
27 }
28 printf(
"[%f, %f]\n",
min,
max);
29 printf("Desordenados.\n");
30 for(i=0; i<n; i++)
31 {
33 printf("X[%ld] = %f\n", i+1, X[i]);
34 }
35 m = sqrt(n);
36 printf("Casilleros: %ld\n", m);
37 rng_int = ceil((
max-
min)/m);
39 car[0] = 0;
40 for(i=1; i<m+1; i++)
41 {
42 rg[i] = rg[i-1]+rng_int;
43 car[i] = 0;
44 }
45 for(i=0; i<n; i++)
46 car[(
int)((X[i]-
min)/rng_int)]++;
47 ind[0]=0;
48 for(i=1; i<m; i++)
49 ind[i]=ind[i-1]+car[i-1];
50 for(i=0; i<m; i++)
51 printf("#[%f, %f) = %ld\t%ld\n", rg[i], rg[i+1], car[i], ind[i]);
52 for(i=0; i<n; i++)
53 {
54 ind2 = (int)((X[i]-
min)/rng_int);
55 Y[ind[ind2]] = X[i];
56 ind[ind2]++;
57 }
58 printf("Buket.\n");
59 for(i=0; i<n; i++)
60 printf("Y[%ld] = %f\n", i+1, Y[i]);
61 for(k=0, ind2 = 0; k<m; k++)
62 {
63 for(i=ind2; i<(ind2+car[k]-1) ; i++)
64 for(j=i+1; j<(ind2+car[k]); j++)
65 if(Y[i]>Y[j])
66 {
67 Y[i]*=Y[j];
68 Y[j]=Y[i]/Y[j];
69 Y[i]/=Y[j];
70 }
71 ind2 += car[k];
72 }
73
74
75 printf("Ordenados.\n");
76 for(i=0; i<n; i++)
77 printf("Y[%ld] = %f\n", i+1, Y[i]);
78 return 0;
79}