C/Visual C - [ERROR] Método Burbuja

   
Vista:

[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=================
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

[ERROR] Método Burbuja

Publicado por jordi (7 intervenciones) el 26/06/2013 18:40:50
Para el metodo de la burbuja yo uso este codigo que es bastante parecido pero si funciona, nose si te ajudara de algo, no termino de encontrar donde esta exactamente el error en tu 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
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
 
	 int v[5]={17,12,5,3,8};
	 int i, temporal, ordenat;
 
	 do{
	 ordenat=1;
		for (i=0; i<4; i++)
		{
			if(v[i]>v[i+1])
			{
				ordenat=0;
				temporal=v[i];
				v[i]=v[i+1];
				v[i+1]=temporal;
			}
		}
	 }while(!ordenat);
	 for(i=0; i<5; i++)
	 {
		printf("%i,", v[i]);
	 }
  system("PAUSE");
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar