Foros del Web » Programación para mayores de 30 ;) » C/C++ »

método de la burbuja

Estas en el tema de método de la burbuja en el foro de C/C++ en Foros del Web. Hola, quisiera que alguien me explicara cómo funciona el método de la burbuja para ordenar un conjunto de números de un vector. He mirado muchas ...
  #1 (permalink)  
Antiguo 26/06/2010, 04:16
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 9 meses
Puntos: 0
método de la burbuja

Hola, quisiera que alguien me explicara cómo funciona el método de la burbuja para ordenar un conjunto de números de un vector. He mirado muchas páginas, pero no consigo entenderlo. Gracias.
  #2 (permalink)  
Antiguo 26/06/2010, 07:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: método de la burbuja

Tengo problemas para entender el siguiente algoritmo que ordena un vector de menor a mayor:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 5
  4.  
  5. int main(){
  6.          int v[TAM];
  7.          int i;
  8.          int j;
  9.          int aux;
  10.  
  11.          for(i=0; i<TAM; i++){
  12.             printf("Numero: ");
  13.             scanf("%d", &v[i]);
  14.          }
  15.          for(i=0; i<(TAM-1); i++)
  16.             for(j=i+1; j<TAM; j++)
  17.                if(v[j]<v[i]){
  18.                  aux=v[j];
  19.                  v[j]=v[i];
  20.                  v[i]=aux;
  21.                }
  22.          for(i=0; i<TAM; i++)
  23.              printf("%d\n", v[i]);
  24. }

1º En el tercer bucle for por qué pone
Código C:
Ver original
  1. j=i+1
.
2º Dentro del if ¿qué hace esta instrucción?
Código C:
Ver original
  1. aux=v[j];
la variable aux ¿qué hace? y a continuación ¿que significa
Código C:
Ver original
  1. v[j]=v[i]
.
Por último la instrucción
Código C:
Ver original
  1. v[i]=aux;
¿qué hace? ¿por qué aquí la variable aux se coloca a la derecha y arriba a la izquierda. Espero que puedan aclararme estas dudas. Gracias.
  #3 (permalink)  
Antiguo 29/06/2010, 10:26
Avatar de soychacal  
Fecha de Ingreso: marzo-2010
Mensajes: 37
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: método de la burbuja

Es facil de enteder digamos que tienes 3 vasos vacias, 2 vasos esta lleno de agua como lo puedes vaciar ùn de los vasos que esta lleno de agua.....
  #4 (permalink)  
Antiguo 29/06/2010, 13:44
Avatar de erickxls  
Fecha de Ingreso: julio-2009
Ubicación: Lima
Mensajes: 78
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: método de la burbuja

la ultima parte es solo para intercambiar los elementos del vector para que lo entiendas en una hoja de papel escribes una sucesion de numeros y segun el agoritmo vas haciendo el ordenamiento asi te das cuenta de los pasos que se dan
  #5 (permalink)  
Antiguo 29/06/2010, 21:06
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: método de la burbuja

Bien es muy sencillo de enter el metodo de la burbuja, pero debo aclara que tu dudas no son precisamente con respecto al metodo si no mas bien con respecto a la programacion con arreglos. Aun asi tratare de explicarte. Por curiosidad tu implementaste ese programa:

Veamos el procedimiento, con un ejemplo:
supon que tienes el siguiente conjunto de numeros:

posicion 0 1 2 3 4 5 6 7 8 9
arreglo 3 4 2 1 8 9 0 7 5 6

y k vas a utilizar el metodo de la burbuja q en este caso esta representado por el siguiente codigo

for(i=0; i<(TAM-1); i++)
for(j=i+1; j<TAM; j++)
if(v[j]<v[i]){
aux=v[j];
v[j]=v[i];
v[i]=aux;
}

el primer for va a recorrer los elementos desde el primer elemento hasta un elemento antes del ultimo elemento, en este caso desde el elemento 0 hasta el elemento 8, ya que una vez que el primer ciclo llega hasta aqui en automatico o por default el ultimo elemento quedaria ya ordenado

el segundo for va desde desde i+1 hasta el final del arreglo, esto debido que esta en el supuesto de que todos elementos que van desde 0 hasta i ya estan ordenados.

en cuanto a v[j] = v[i], significa que el valor que se encuentra en la posicion j va a ser reemplazado por el valor que se encuentra en la posicion i.
debes tomar en cuenta q tu no puedes intercambiar el valor de dos variables asi
var1=1
var2=2

var1= var2
var2= var1

ya que la primera asignacion var1 tomara el valor de 2 asi k cuando var2=var1, var1 ya valdra 2 y no 1. Por eso que se hace uso de una variable auxiliar

var1=1
var2=2
tmp=var1

tmp= var2
var2= var1
var1=tmp

Etiquetas: burbuja
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.