[ERROR] Método Burbuja
Publicado por Mauricio Adrián Hebrard (3 intervenciones) el 25/06/2013 21:21:24
Buenas... Quiero mostrarles dos codigos que tengo donde utilizo método Burbuja para ordenar.
=================PRIMER PROGRAMA=================
=================SEGUNDO PROGRAMA====================
Como verán, en el primero lo aplico directamente sobre el "main", mientras que en el segundo lo utilizo como una función.... El problema está en que en ninguno de los dos casos me ordena los números como corresponde... ¿¿¿¿...donde estaría mi error...????
Muchas gracias desde ya!
=================PRIMER PROGRAMA=================
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main()
{
int i, j, aux;
int valor[N];
for (i=0; i<N; i++)
{
valor[i]=rand();
printf("\n%d", valor[i]);
}
for (i=0;i<=N;i++)
{
for (j=i+1;j<N;j++)
{
if (valor[i] > valor[j])
{
aux=valor[i];
valor[i]=valor[j];
valor[j]=aux;
}
}
}
printf("\n\n");
for (i=0; i<N; i++)
printf("\n%d", valor[i]);
return 0;
}
=================SEGUNDO PROGRAMA====================
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
#define N 40
void burbuja (int *, int);
int main(void)
{
int A[N], i;
for (i=0;i<N;i++)
{
A[i]=rand();
printf("\n%d", A[i]);
}
printf("\n\n\nVector Ordenado:\n");
burbuja(A, N);
for (i=0;i<N;i++)
{
printf ("\n%d", A[i]);
}
return 0;
}
void burbuja (int *item, int cont)
{
int i, j, ordenado=0;
int temp;
for (i=1;i<cont;i++)
{
for (j=cont-1;j>=i;j--)
{
ordenado=0;
if (item[j-1]>item[j])
{
temp=item[j-1];
item[j-1]=item[j];
item[j]=temp;
ordenado++;
}
}
if (ordenado==0)
break;
}
return (0);
}
Como verán, en el primero lo aplico directamente sobre el "main", mientras que en el segundo lo utilizo como una función.... El problema está en que en ninguno de los dos casos me ordena los números como corresponde... ¿¿¿¿...donde estaría mi error...????
Muchas gracias desde ya!
Valora esta pregunta


0