8{
9 int i, j, k, l, n, nc, cs[
N],
id[
N], ncs;
10 float max,
min, x[
N], xs[
N], aux, rng_c;
11 srand(time(NULL));
12 do{
13 printf("Ingrese el numero de elementos: ");
14 scanf("%d", &n);
16 printf("Ingrese el valor maximo: ");
18 printf("Ingrese el valor minimo: ");
21 {
23 {
25 {
29 }
30 else
31 {
34 }
35 }
36 else
37 {
40 }
41 }
42 printf("Desordenado.\n");
43 for(i=0; i<n; i++)
44 {
46 cs[i] = 0;
47 printf("X[%d] = %f\n", i+1, x[i]);
48 }
49
50 nc = 0;
51 aux = n;
52 while(aux>(2*nc+1))
53 {
54 aux -= (2*nc+1);
55 nc++;
56 }
58 for(i=0; i<n; i++)
59 cs[(
int)((x[i]-
min)/rng_c)]++;
60 for(i=1, id[0]=0; i<n; i++)
61 id[i] = id[i-1]+cs[i-1];
62 for(i=0; i<n; i++)
63 {
64 ncs = (int)((x[i]-
min)/rng_c);
65 xs[id[ncs]] = x[i];
66 id[ncs]++;
67 }
68 printf("%d\t%f\n", nc, rng_c);
69 for(i=0; i<nc; i++)
70 printf("CS[%d] = %d\n", i, cs[i]);
71 for(i=0; i<nc; i++)
72 printf(
"%f\t",
min+rng_c*(i+1));
73 printf("Pseudo-ordenado.\n");
74 for(i=0; i<n; i++)
75 printf(
"X[%d] = %f\t%d\t%f\n", i+1, x[i], (
int)((x[i]-
min)/rng_c), xs[i]);
76 for(i=1, id[0]=0; i<n; i++)
77 id[i] = id[i-1]+cs[i-1];
78 for(l=0; l<nc; l++)
79 {
80
81 for(i=id[l]; i<(id[l]+cs[l])-1; i++)
82 {
83 for(j=i+1, k=i; j<(id[l]+cs[l]); j++)
84 if(xs[k]>xs[j])
85 k = j;
86 if(k!=i)
87 {
88 aux = xs[i];
89 xs[i] = xs[k];
90 xs[k] = aux;
91 }
92 }
93 }
94 printf("Ordenado.\n");
95 for(i=0; i<n; i++)
96 printf("X[%d] = %f\n", i+1, xs[i]);
97 return 0;
98}