Powered By Blogger

jueves, 28 de noviembre de 2013

ItsxRadio


martes, 26 de noviembre de 2013

Nombre del Método

Burbuja Mejorada

Características Teóricas

Es un método iterativo. Es utilizado para resolver problemas que pueden involucrar muchas variables También se clasifica como un método de ordenamiento interno ya que trabajan en memoria principal y sus implementaciones son muy variadas y en función de la memoria disponible. Integra una variable llamada "bandera", la cual detecta los intercambios que se realizaron. La ordenación por burbuja o “bubble sort” se basa en comparar elementos contiguos del arreglo (vector) e intercambiar sus valores si no están en orden. De este modo, los valores de mayor rango se “hunden” hacia la parte inferior del arreglo y los de menor rango “burbujean” hacia la parte superior del arreglo.

La ordenación se basa en comparar los elementos adyacentes del arreglo e intercambiar valores, si es que están desordenados.

Si:

a [0] a [1] a [2] … a [n-1]

El método comienza a comparar a [0] con a[1]; si no están en orden, los intercambia entre sí. Después sigue comparando a [1] con a [2] y si no están en orden, los intercambia. Se sigue comparando e intercambiando hasta a [n-2] con a[n-1] si están en desorden. Estas operaciones son el primer recorrido a través del arreglo. Este proceso se repite durante n-1 recorrido, teniendo en cuenta que en el recorrido “i se ha puesto el elemento de mayor rango de las posiciones “0, 1, … n-i” en la posición “n-i”. De esta forma cuando i toma el valor de n-1, el vector esta ordenado.

Ventajas y Desventajas.

Ventajas del método:
Fácil de comprender y programar.
Es eficaz.
Consume menos recursos comparado con otros métodos de ordenación.

Desventajas:
Requiere muchas comparaciones
Requiere muchas lecturas/escrituras de memdsfiia
Es recursivo y su implementación no recursiva es complicada.
Es el menos eficiente de los métodos de ordenamiento.

Algoritmo Base

void burbujaM(int *v, int n) {
bool bandera = true;
int li = 0;
do
{
li++;
bandera = true;
for (int i = 0; i < n - li; i++) {
if ( v[i] > v[i+1] ) { // compara los valores
intercambia los datos
int tem = v[i];
v[i] = v[i+1];
v[i+1] = tem;
bandera= false;
}
}
}
while(!bandera);
}

Código en C

PARA DESCARGAR EL PROGRAMA 
AQUÍ EL LINK Y ABAJO EL CÓDIGO

#include
#include
#include
main(){
float X[100], AUX;
int N, paso, j;
int bandera=1;
clrscr();
printf("Cuantos n£meros va a ingresar: ");
scanf("%i",&N);
for(j=0;j 
{
printf("Deme un numero: ");
scanf("%f",&X[j]);
}
for(paso=0;paso {
bandera=0;
for(j=0;j
{
if(X[j] {
bandera=1;
AUX=X[j];
X[j]=X[j+1];
X[j+1]=AUX;
}
}
}
printf("\nLos numeros ordenados de mayor a menor son:\n");
for(j=0;j {
printf("%.2f\n",X[j]);
}
bandera=1;
for(paso=0;paso {
bandera=0;
for(j=0;j {
if(X[j]>X[j+1])
{
bandera=1;
AUX=X[j]; 
X[j]=X[j+1];
X[j+1]=AUX;
}
}
}
printf("\ny de menor a mayor:\n");
for(j=0;j {
printf("%.2f\n",X[j]);
}
getch();
}

Código en Java

PARA DESCARGAR EL PROGRAMA

EN EL LINK DE ABAJO



class OrdenaAlgoritmo {
    public static void ordenar( int [] arreglo) {
 int pasadas = 0;
 int comparaciones = 0;
 for (int i = 0; i < arreglo.length; i++) {
     ++pasadas;
     for (int j = 0; j < arreglo.length - 1; j++) {
  ++comparaciones;
  if (arreglo[j] > arreglo[j + 1]) {
      intercambiar(arreglo, j, j+1);
  }
     }
 }
 estadisticas(pasadas, comparaciones);
    }

    public static void ordenarMejorado( int [] arreglo) {
 int pasadas = 0;
 int comparaciones = 0;
 boolean hayCambios = true;
 for (int i = 0; hayCambios ; i++) {
     ++pasadas;
     hayCambios = false;
     for (int j = 0; j < arreglo.length - 1; j++) {
  ++comparaciones;
  if (arreglo[j] > arreglo[j + 1]) {
      intercambiar(arreglo, j, j+1);
      hayCambios = true;
  }
     }
 }
 estadisticas(pasadas, comparaciones);
    }

   private static void intercambiar(int [] arreglo, int a, int b) {
 int tmp = arreglo[a];
 arreglo[a] = arreglo[b];
 arreglo[b] = tmp;
    }

    private static void estadisticas( int pasadas, int comparaciones) {
 System.out.println( "Pasadas: " + pasadas );
 System.out.println( "Comparaciones: " + comparaciones );
    }
}

-----------------------------------------------------------------------------------------------------

public class OrdenaBurbuja {
    public static void  main (String args[]) {

 int  valores = {15,35,01,05,04,03,19,45,13,02,55,8,
    78,997,451,546,12,16,24,103,99,784,
    4541,15};

 //OrdenaAlgoritmo.ordenar(valores);
 OrdenaAlgoritmo.ordenarMejorado(valores);
 // Mostrar arreglo.
 for (int i = 0; i < valores.length ; i++)
     System.out.println ( "valores["+i+"]: "+  valores[i]);
 
    }
}