Top

Cargando cosas bonitas...

Recargar...

Ordenar array utilizando el método de la burbuja en C++


animacion-metodo-burbuja

Animación que recrea el algoritmo del método de la burbuja

Para ordenar arrays tenemos a nuestra disposición diferentes tipos de algoritmos para hacerlo. Hay lo que se llaman formas naturales de ordenación y las que no lo son. El método de la burbuja es un método de ordenación no natural para ordenar arrays. Consiste en ir recorriendo todo el array a ordenar, comparando dos elementos al mismo tiempo e intercambiándolos si no están en el lugar apropiado. Al finalizar el recorrido por todos los elementos, se determina si hubo algún cambio, y en caso afirmativo, se repite el algoritmo hasta que no haya cambio alguno.

De todas formas si quieres profundizar en el tema de algoritmos de ordenación, puedes visitar los apuntes (de mi universidad) que tengo subidos sobre ello.

El nombre que se le atribuye viene porque al hacer el intercambio, los elementos más pequeños “burbujean” de forma progresiva hasta el inicio del array, mientras que los más grandes se “hunden”. Es el algoritmo de ordenación por comparación más sencillo de implementar.

En cuanto al rendimiento, el algoritmo no destaca por su rapidez.  Es de los más pobres en rendimiento y sobre todo no es recomendable usarlo en arrays largos. Sin embargo, está bastante bien si estás empezando ya que se caracteriza por su sencillez.

En concreto el ejemplo que voy a mostrar a continuación es el código para ordenar un array de mayor a menor, sin embargo para ordenador de menor a mayor solo habría que cambiar uno de los signos que comento en el código.

#include <iostream> 
using namespace std;
#include <cstdlib>

int const DIM = 10;
typedef float tArray[DIM];

void rellenarArray(tArray);
void ordenarArray(tArray);
void mostrarArray(const tArray);

int main(){
	tArray miArray;
	
	rellenarArray(miArray);
	ordenarArray(miArray);
	mostrarArray(miArray);
	
	system("PAUSE");
	return 0;
}

void rellenarArray(tArray miArray){
	cout << "Introduzca los 10 elementos del array" << endl;
	
	for (int i = 0; i < DIM; i++){ // Rellenamos las 10 posiciones del array
		cin >> miArray[i];
	}
}

void ordenarArray(tArray miArray){
	float temporal;
	
	for (int i = 0;i < DIM; i++){
		for (int j = 0; j< DIM-1; j++){
			if (miArray[j] < miArray[j+1]){ // Ordena el array de mayor a menor, cambiar el "<" a ">" para ordenar de menor a mayor
			temporal = miArray[j]; 
			miArray[j] = miArray[j+1]; 
			miArray[j+1] = temporal;
			}
		}
	}
}

void mostrarArray(const tArray miArray){
	cout << "Mostrando array ordenado..." << endl;
	
	for (int i = 0; i < DIM; i++) // Imprime las 10 posiciones
		cout << miArray[i] << endl;
}	

 


11 Comentarios

  • luis Dice

    ayuda ocupo hacer un arreglo de ordena de mayor a menor numeros con solo el primer arreglo predeterminado

  • no me gusta programación

  • Kaio Dice

    Hola, el algoritmo que propones esta mal, en el segundo bucle siempre recorres todo el array por lo que te queda un algoritmo cuadratico.
    Deberias cambiar la j = 0, por j = i – 1, ya que asi empiezas a mirar por la continuacion de la i, todo lo de antes ya se ha ordenado.

    void ordenarArray(int v[], int n) {
    int aux;

    for (int i = 0; i< n – 1; i++) {
    for (int j = i + 1; j v[j]) {
    aux = v[i];
    v[i] = v[j];
    v[j] = aux;
    }
    }
    }
    }

    Un saludo.

    • Luis Dice

      Este ejercicio como lo harías para poner un menú con las opciones 1-Ingresar los valores, 2-Ordenarlos, 3-Imprimir los valores originales, 4-Imprimir los valores ordenados.
      Lo interesante está en que una vez que seleccionas la opción 2 despues de ingresar los valores, la opción 3 ya no trabaja.

  • t Dice

    #include
    int main(){

    int vec[5] ={7,2,9,15,6};
    int aux,n;
    for(int i=0; i<5; i++){
    for(int j=0;j vec[j+1]){
    aux=vec[j];
    vec[j]=vec[j+1];
    vec[j+1]=aux;
    }
    }
    }
    for(int i=0;i<5;i++){
    printf("%d",vec[i]);
    }
    return 0;

    }

  • ramon Dice

    #include
    int main(){

    int vec[5] ={7,2,9,15,6};
    int aux,n;
    for(int i=0; i<5; i++){
    for(int j=0;j vec[j+1]){
    aux=vec[j];
    vec[j]=vec[j+1];
    vec[j+1]=aux;
    }
    }
    }
    for(int i=0;i<5;i++){
    printf("%d",vec[i]);
    }
    return 0;

    }

  • Luis Dice

    Este ejercicio como lo harías para poner un menú con las opciones 1-Ingresar los valores, 2-Ordenarlos, 3-Imprimir los valores originales, 4-Imprimir los valores ordenados.
    Lo interesante está en que una vez que seleccionas la opción 2 despues de ingresar los valores, la opción 3 ya no trabaja.

  • Desarrolle un programa que permita ingresar 5 números en un arreglo, el programa debe
    multiplicar todos los elementos del arreglo y mostrar el resultado por pantalla.

  • Desarrolle un programa que permita ingresar y ordenar una lista de 5 nombres, con el método burbuja

  • Desarrolle un programa en c++ que permita ingresar y ordenar una lista de 5 nombres , con el método burbuja

  • katherinne Julissa Dice

    me podrían ayudar a hacer un programa donde incluya algún tipo de ordenamiento de vectores que hay en c++ por favor enserio se lo agradecería mucho

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.