Foro sobre Java SE > Duda sencilla sobre Algoritmo Ordenación Burbuja.
Aquí tienes dos excelentes artículos, con numerosos ejemplos comentados, sobre este tipo de algoritmo:
http://en.literateprograms.org/Bubble_sort_(Java)
http://www.leepoint.net/notes-java/data/arrays/32arraybubblesort.html
hola @shao, es por lo de j+1 , si pusiera hasta i<A.length, tendría un error a al acceder al vector en una posición que no existe. lo mismo pasa con el interno por eso es j<A.length-i-1
ejemplo: supón que el tamaño de A=5;
en la primera interacion : i=0
y el ultimo valor que j alcansario en esta interacion seria 5-0-1=4 y como j debe ser menor que esto entonces j=3.
ahora en el cuerpo del for sustituyendo valores tienes esto:
if(A[3+1]<A[3]){
aux=A[3+1];
A[3+1]=A[3];
A[3]=aux;
}
y por esa razón los limites del for son esos.
Hola Joseph lo que tu dices es para el bucle interno... el de la j y se subsana poniendo esta condición en el segundo bucle o bucle interno j<A.length-i-1, pero en el primer bucle o bucle más exterior eso no le afecta...ya que j empieza en 0 y llega hasta A.length-1-1(<)-i...
aguien me ayuda?
Indagando un poco he obtenido la respuesta....ahí os la dejo:
En el bucle más externo, realizaremos n-1 pasadas. En cada una de ellas lograremos que el elemento de mayor valor se sitúe al final. El motivo de realizar n-1 pasadas y no n es que si en cada pasada logramos ordenar un elemento, cuando tengamos en orden los n-1 del final del array, el elemento que queda es necesariamente el más pequeño de todos.
Hola a tod@s,
es una pregunta sencilla pero no me queda del todo claro... (estaré ofuscado o no se...)
Es sobre el algoritmo de ordenación en Burbuja. El código es el siguiente:
public static void burbuja(int [] A){
int i, j, aux;
for(i=0;i<A.length-1;i++)
for(j=0;j<A.length-i-1;j++)
if(A[j+1]<A[j]){
aux=A[j+1];
A[j+1]=A[j];
A[j]=aux;
}
}
Lo que no me queda muy claro porque en el bucle más exterior empieza en 0 y llega hasta A.length-1-1(por el <) o algunos ponen i=1;i<A.length, es decir...se come una iteración...por qué????? No me queda muy claro.
Gracias.
Saludos.