Alguien me podria explicar este codigo?

nemesis88

Bovino adicto
#1
Hola a todos, hace poco me han enseñado el metodo burbuja, y al chekearlo, no entiendo perfectamente todo el codigo, es por eso que les pido ayuda para saber si me podrian ayudar a interpretarlo linea por linea y asi yo pueda aprender mejor.Salu2

Código:
void burbujaA(int L[],int n){
    int aux;
    for (int i = n; i > 1; i--) {
        for (int j = 1; j < i; j++) {
            if(L[j-1]>L[j]){
            aux=L[j-1];
            L[j-1]=L[j];
            L[j]=aux;
            }
            
        }
        
    }
}

Antetodo gracias a todos.
 

omega96

Bovino Milenario
#2
void burbujaA(int L[],int n){ //esta funcion recibe dos parametros un array de tipo entero y un entero
int aux; //se declara una variable aux para utilizarlo como variable temporal
for (int i = n; i > 1; i--) { //se realiza una primer estructura de repeticion
for (int j = 1; j < i; j++) {
//se realiza una segunda estructura de repeticion de forma anidada
if(L[j-1]>L[j]){ //se realiza una comparacion de entre valores enteros de tipo mayor que >
aux=L[j-1]; //si
L[j-1 es mayor que L[j] se realizan el intercambio de lugares
L[j-1]=L[j]; L[j]=aux; } } } }


y es todo espero que lo puedas comprender, saludos.
 
#3
Hola a todos, hace poco me han enseñado el metodo burbuja, y al chekearlo, no entiendo perfectamente todo el codigo, es por eso que les pido ayuda para saber si me podrian ayudar a interpretarlo linea por linea y asi yo pueda aprender mejor.Salu2

Código:
void burbujaA(int L[],int n){
    int aux;
    for (int i = n; i > 1; i--) {
        for (int j = 1; j < i; j++) {
            if(L[j-1]>L[j]){
            aux=L[j-1];
            L[j-1]=L[j];
            L[j]=aux;
            }
            
        }
        
    }
}
Antetodo gracias a todos.
Haz un ejemplo a mano en papel y ejecuta el algoritmo paso a paso para que le entiendas

Ejemplo:
Se tiene la siguiente lista de 4 elementos 45,11,26,3
entonces
n=4
L=[45,11,26,3]

Paso 1:
i=n=4
j=1
aux=null aux es una variable de paso, es decir, para almacenar un valor que se va a colocar en otra posicion de la lista

el for interno verifica si j<i o sea 1<4 como es verdadero se ejecuta lo siguiente

si L[j-1]>L[j] o sea L[1-1]>L[1] o sea si L[0]>L[1] o sea si 45>11
poner en aux lo que haya en L[j-1] o sea 45
poner en L[j-1] lo que haya en L[j] o sea 11
poner en L[j] lo que se puso en aux o sea 45 - hasta aquí ya intercambiamos los valores y la lista queda como L[11,45,26,3]

Paso 2: terminó el bloque de código y solo se incrementa j en 1 entonces
i=4
j=2

el for interno verifica si j<i o sea 2<4 como es verdadero se ejecuta lo siguiente

si L[j-1]>L[j] o sea L[2-1]>L[2] o sea si L[1]>L[2] o sea si 45>26
poner en aux lo que haya en L[j-1] o sea 45
poner en L[j-1] lo que haya en L[j] o sea 26
poner en L[j] lo que se puso en aux o sea 45 - hasta aquí ya intercambiamos los valores y la lista queda como L[11,26,45,3]

Paso 3: terminó el bloque de código y solo se incrementa j en 1 entonces
i=4
j=3

el for interno verifica si j<i o sea 3<4 como es verdadero se ejecuta lo siguiente

si L[j-1]>L[j] o sea L[3-1]>L[3] o sea si L[2]>L[3] o sea si 45>3
poner en aux lo que haya en L[j-1] o sea 45
poner en L[j-1] lo que haya en L[j] o sea 3
poner en L[j] lo que se puso en aux o sea 45 - hasta aquí ya intercambiamos los valores y la lista queda como L[11,26,3,45]

Paso 4: terminó el bloque de código y solo se incrementa j en 1 entonces
i=4
j=4

el for interno verifica si j<i o sea 4<4 como es falso no se ejecuta el codigo del if

Paso 5: terminó el bloque de código y se decrementa i en 1 y se asigna 1 a j entonces
i=3
j=1

el for interno verifica si j<i o sea 1<3 como es verdadero se ejecuta lo siguiente

si L[j-1]>L[j] o sea L[1-1]>L[1] o sea si L[0]>L[1] o sea si 11>26
como no es mayor no se intercambia
....
...
etc etc

Te toca completar el ejercicio para que vayas viendo como funciona el algoritmo, verás que al final queda la lista ordenada.

Espero te haya servido de ayuda.

Saludos!
 

lasaltashoras

Bovino adolescente
#5
Ordenamiento...

El método burbúja se utiliza para ordenar arreglos, y básicamente es lo que hace este código,, ordena los elementos del arreglo L[], recorriendo cada elemento del arreglo (primer bucle for), iniciando con el último elemento, comparandolo con cada elemento (segundo bucle for), si el elemento en proceso es menor al elemento con el que se compara, ocupa su posición, es decir, lo va subiendo según su valor.
 

Basilisko

Bovino maduro
#6
Otra opción que que corras el programa en modo debug y pongas watches para las variables i, j, n, L y aux y puedas ver los cambios.
cumpa como es que se hace eso, bueno no en relacion a lo que han posteado aqui, en manera general como haces eso en un codigo en general?????te lo agradeceria brother!!!,.......................................por otro lado continuando con el tema del post, brother si no entiendes aun como funciona ese metodo, le dicen burbuja porque hace que los elementos de menor valor salgan hacia delante, como las burbujas que se elevan, te aconsejaria que hagas una prueba de escritorio, a la antiguita lapiz y papel, dibujando tu arreglo con cajitas orizontales con sus valores, luego te metes en el codigo y vas haciendo el seguimiento paso a paso!!!! P:eek: cuando llegues al QuickSort y quieras hacer la prueba, comparte una aguita de azar jejje, mentira, todos son sencillos, antes de ver el codigo, primero lee como es que funcionan, cual es su filosofia como diria un profe mio, luego que sabes cual es la filosofia que usa, te metes al codigo!!!
 

Giovanni924

Bovino de alcurnia
#7
el mejor debug que puedes hacer es tomar lapiz y papel y hacer tus corridas e ir colocando el flujo en papel. eso aparte de ayudarte a entender el codigo q estas viendo en ese momento agiliza tu logica para otros codigos despues. el debug que te dicen es tomar NETBEANS o cualquier otro IDE.. colocar un punto y dar clic a la opcion debug con F8 vas avanzando linea por linea observando el flujo que lleva tu codigo. y los valores que va recogiendo cada vez que pasa por el bucle. :) puedes usar tu ide para debugear pero seria mas conveniente para que le agarres el modo. hacerlo con papel y lapiz
 
Arriba