Enunciado
Este método consiste en comparar elementos adyacentes y en caso de no estar en el orden deseado se los intercambia de posición. Con esto se logra desplazar a las últimas posiciones del vector a los elementos mayores ( en caso de ordenamiento ascendente ) o a los elementos menores ( en caso de ordenamiento descendente ). El proceso termina en, como máximo, n – 1 recorridas. el algoritmo permite detectar si en algún paso intermedio el vector está ordenado con lo cual se sale del ciclo antes de la cantidad máxima de recorridas posibles.
Video: Ordenamiento por Burbujeo
Código
Python
def Bubble( v ):
fin = 0
k = len( v )
while fin==0:
fin = 1
k -= 1
for i in range( 0, k ):
if v[ i ] < v[ i+1 ]:
fin = 0
v[ i ], v[ i+1 ] = v[ i+1 ], v[ i ]
def main():
lista = [ 12, 18, 3, 22, 15, 48, 12 ]
Bubble( lista )
print( lista )
input( "Presionar/Press Enter to exit " )
main()
C++
#include <iostream>
#include <iomanip>
using namespace std ;
#include <conio.h>
void Bubble ( int n , float v[ ] )
{
bool fin ; int k, i ; float aux ;
fin = false ; k = n ;
while ( !fin )
{
fin= true ;
for ( i = 0 ; i < k-1 ; i++ )
if ( v[ i ] < v[ i + 1 ] )
{
aux = v[ i ] ;
v[ i ] = v[ i + 1 ] ;
v[ i + 1 ] = aux ;
fin = false ;
}
k = k - 1 ;
}
}
int main()
{
int i ;
float v1[ 10 ] ;
cout << "Ingresar 5 numeros/" ;
cout << "Enter 5 numbers: " << endl ;
for ( i = 0 ; i < 5 ; i++ )
cin >> v1[ i ] ;
Bubble( 5 , v1 ) ;
cout << "Vector ordenado/" ;
cout << "Ordered vector" << endl ;
for ( i = 0 ; i < 5 ; i++ )
cout << setw(8) << v1[ i ] << endl ;
cout << endl ;
cout << "Presionar/Press Enter to exit " ;
getch() ;
return 0 ;
}
Pascal
Program ProblemaEj05 ;
uses CRT ;
const
n= 5 ;
type
rango= 0..20 ;
vectorReal= array [rango] of real ;
var
v1: vectorReal ;
i: rango ;
Procedure Bubble( n : rango ; var v : vectorReal ) ;
var
fin : boolean ;
k, i : rango ;
aux : real ;
begin
fin := false ; k := n ;
while not fin do
begin
fin := true ;
for i := 1 to k-1 do
if v[ i ] < v[ i + 1 ]
then
begin
aux := v[ i ] ;
v[ i ] := v[ i + 1 ] ;
v[ i + 1 ] := aux ;
fin := false
end ;
k := k-1
end
end ;
begin
ClrScr ;
write( 'Ingresar 5 numeros/' ) ;
writeln( 'Enter 5 numbers: ' ) ;
for i:=1 to n do
begin
readln( v1[ i ] ) ;
end;
writeln ;
Bubble( n , v1 ) ;
write( 'Vector ordenado/' ) ;
writeln( 'Ordered vector' ) ;
for i:=1 to n do
writeln( v1[ i ]:8:2 ) ;
writeln ;
writeln( 'Presionar/Press Enter to exit ' ) ;
readln ;
end.
Diagramas


