ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
Ejemplo017.c
Go to the documentation of this file.
1
#include<stdio.h>
2
#include<stdlib.h>
3
#include<time.h>
4
5
#define N 10000
6
7
int
main
(
int
argc,
char
*argv[])
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);
15
}
while
(n<1||n>
N
);
16
printf(
"Ingrese el valor maximo: "
);
17
scanf(
"%f"
, &
max
);
18
printf(
"Ingrese el valor minimo: "
);
19
scanf(
"%f"
, &
min
);
20
if
(
min
>
max
)
21
{
22
if
(
max
)
23
{
24
if
(
min
)
25
{
26
min
*=
max
;
27
max
=
min
/
max
;
28
min
/=
max
;
29
}
30
else
31
{
32
min
=
max
;
33
max
= 0;
34
}
35
}
36
else
37
{
38
max
=
min
;
39
min
= 0;
40
}
41
}
42
printf(
"Desordenado.\n"
);
43
for
(i=0; i<n; i++)
44
{
45
x[i] = ((
max
-
min
)*rand())/RAND_MAX+
min
;
46
cs[i] = 0;
47
printf(
"X[%d] = %f\n"
, i+1, x[i]);
48
}
49
// Algoritmo de Bucket
50
nc = 0;
51
aux = n;
52
while
(aux>(2*nc+1))
53
{
54
aux -= (2*nc+1);
55
nc++;
56
}
57
rng_c = (
max
-
min
)/nc;
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
// Algoritmo de Seleccion
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
}
N
#define N
Definition
012_aleatorio.c:5
max
#define max
Definition
012_aleatorio.c:6
min
#define min
Definition
012_aleatorio.c:7
main
int main(void)
Definition
Ejemplo_035.c:15
src
20252
Ejemplo017.c
Generated by
1.16.1