Ordenamiento Método de la Burbuja

burbuja

Hola amigos, para todo programador un problema cotidiano sería organizar una lista, un arreglo, etc., un método para ello muy tradicional y de obligado conocimiento es el Ordenamiento de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas “burbujas”. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.

Una manera simple de expresar el ordenamiento de burbuja en pseudocódigo es la siguiente:

procedimiento DeLaBurbuja (a0, a1, a2, …, a( n - 1 ))
  para i←2 hasta n hacer
    para j0 hasta n - i hacer
      si a(j) > a(j+1) entonces
      aux a(j) 
      a(j)  a(j+1) 
      a(j+1)  aux
     fin si
    fin para
  fin para
fin procedimiento

A continuación se muestra el Ordenamiento de burbuja en distintos lenguajes de programación:

  • C
//Ordenamiento por método de la Burbuja
void ordenamientoBurbuja(int v[], int util_v) {
         int temp, i, j;
         for (i = 0; i < util_v -1 ; i++) {
                 for (j = i + 1; j < util_v ; j++) {
                         if (v[i] > v[j]) {
                                temp = v[i];
                                v[i] = v[j];
                                v[j] = temp;
                 }
                 }
         }
}
  • C++
template<typename _Ty>
void bubble_sort(vector<_Ty> & v){
        for (size_t i = 0; i < v.size() - 1; ++i){
                for (size_t j = i + 1; j < v.size(); ++j){
                        if (v[i] > v[j])
                                swap(v[i], v[j]);
                }
        }
}
  • C#
    Public int[] OrdenarBurbuja(int[]x)
       {
            int t= x.Length, temp;
            for(int i=1 ; i< t ; i++)
                  for(int j = t-1 ; j >= i; j--)
                       {
                         if(x[j] < x[j-1])
                             {
                              temp= x[j];
                              x[j]= x[j-1];
                              x[j-1]= temp;
                             }
                       }
       return x;
       }
  • Java
    //Ordenamiento por Burbuja
    // by ramses2999
    public static int[] OrdenarBurbuja(int[] n){
        int temp;
        int t = n.length;
        for (int i = 1; i < t; i++) {
            for (int k = t- 1; k >= i; k--) {
                if(n[k] < n[k-1]){
                    temp = n[k];
                    n[k] = n[k-1];
                    n[k-1]=  temp;
                }//fin if
            }// fin 2 for
        }//fin 1 for
        return n;
    }//fin
  • Perl
sub bubblesort {
    # Ordena la lista pasada como argumento por valor
    for my $i (    0 .. @_-2 ) {
    for my $j ( $i+1 .. @_-1 ) {
        @_[ $i, $j ] = @_[ $j, $i ] if $_[$i] > $_[$j];
    }}
}
  • Visual Basic
    Private Sub OrdenarBurbuja(ByRef VectorOriginal() As Integer)
        Dim Temp, Longitud As Integer
        Longitud = VectorOriginal.Length - 2
        For b = 0 To Longitud
            For a = 0 To Longitud
                If VectorOriginal(a) > VectorOriginal(a + 1) Then
                    Temp = VectorOriginal(a + 1)
                    VectorOriginal(a + 1) = VectorOriginal(a)
                    VectorOriginal(a) = Temp
                End If
            Next
        Next
    End Sub
  • PHP
<?php
//Ordenamiento por burbuja
$numeros = array(9, 4, -1, 7, 8, 11, 6, 12, 10, 5);
$n = count($numeros);
for ($i = 1; $i<$n; $i++) {
    for ($j = $n-1; $j >= $i; $j--) {
        echo "i: $i, j: $j\n";
        echo "Comparando " . $numeros[$j-1] . " y " . $numeros[$j] . "\n";
        if ($numeros[$j-1] > $numeros[$j]) {
            $aux = $numeros[$j];
            $numeros[$j] = $numeros[$j-1];
            $numeros[$j-1] = $aux;
        }
    }
}
print_r($numeros);

4 thoughts on “Ordenamiento Método de la Burbuja

    1. Amigo el visual basic lo vi en mis años de estudiante y sobre XP malitas, por lo que no tengo experiencias especificamente en la install de VB en ningun SO, ahora dime algo cuando intentas install que pasa, porque por lo general la arquitectura 64bit permite install programas de 84bit sin problemas o no ser que sea el software especifico para 32, te lo digo pues en mi trabajo la PC tiene win7 a 32bit porque tiene un programa (Kerio) que solo lo tengo a 32bit. Por tanto creo que si no puedes install algun VB q tienes puede ser q este hecho solo para 32. Saludos.

  1. Este es el método en Python:

    def bubble_sort(lista):
    length = len(lista)
    for i in range(1, length):
    for k in range(length-1, i-1, -1):
    if lista[k] < lista[k-1]:
    lista.insert(k-1, lista.pop(k))
    return lista

Deja un comentario

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