Ordenamiento de burbuja – Algoritmos de ordenamiento
En este artículo se describe el algoritmo de ordenamiento de burbuja y su implementación en varios lenguajes.
El algoritmo de ordenamiento de burbuja es uno de los algoritmos de ordenamiento más sencillos aunque no es el más eficiente. Su simplicidad lo convierte en un algoritmo ideal para practicar programación.
Estabilidad: Estable
Método: Intercambio
Comparativo: Si
Uso de memoria: 1
Complejidad computacional:
Mejor caso: O(n)
Caso promedio: O(n²)
Peor caso: O(n²)
Algoritmo de ordenamiento de burbuja
Comenzamos con una lista de elementos no ordenados

Tomamos los primeros dos números y si no están ordenados se intercambian los lugares

Se repite el proceso con los siguientes dos números

El proceso continua hasta llegar al final


El último número ya queda ordenado por lo que en la siguiente iteración ya no se evalúa acortando el proceso



En la tercera iteración no se evalúan los últimos dos valores


La cuarta iteración se finaliza sin que se haya realizado un intercambio por lo que el algoritmo termina

Al finalizar el algoritmo tenemos como resultado la lista ordenado
Código
C
#include<stdio.h>
#define SIZE 5
void mostrarLista(int *);
int main(int argc, char** argv){
	int lista[SIZE]={5,2,4,1,3};
	int n, l=SIZE,i,temp;
	mostrarLista(lista);
	do{
		n=0;
		//Recorrer la lista
		for(i=1;i<l;i++){
			//Verificar si los dos valores estan ordenados
			if(*(lista+i-1)>*(lista+i)){
				//Ordenar si es necesario
				temp=*(lista+i-1);
				*(lista+i-1)=*(lista+i);
				*(lista+i)=temp;
				n=i;
				mostrarLista(lista);
			}
		}
		l=n;
	}	while(n!=0);
	
}
//Función para mostrar estado de la lista
void mostrarLista(int *a){
  int i;
  for(i=0;i<SIZE;i++) printf("\t[%d]", *(a+i));
  printf("\n");
}PHP
<?php
   
	$lista[0]=5;
	$lista[1]=2;
	$lista[2]=4;
	$lista[3]=1;
	$lista[4]=3;
	//Longitud de la lista
	$lon=count($lista);
	$l=$lon;
	
	mostrarLista($lista,$lon);
    do
    {
		$n=0;
		//Recorrer la lista
		for($i=1;$i<$l;$i++)
		{
			//Verificar si los dos valores estan ordenados
			if($lista[$i-1]>$lista[$i])
			{
				//Ordenar si es necesario
				$temp=$lista[$i-1];
				$lista[$i-1]=$lista[$i];
				$lista[$i]=$temp;
				$n=$i;
				mostrarLista($lista,$lon);
			}
		}
		$l=$n;
	}
	while($n!=0);
	
//Función para mostrar estado de la lista
function mostrarLista($lista,$lon)
{
	for($i=0;$i<$lon-1;$i++)
	{
		echo "$lista[$i] ";
	}
	echo "<br/>";
}Pseudocódigo para PSeint
Proceso Burbuja
	Dimension lista[5];
	lista[1]=5;
	lista[2]=2;
	lista[3]=4;
	lista[4]=1;
	lista[5]=3;
	//Longitud de la lista
	lon=5;
	l=lon;
	
	mostrarLista(lista,lon);
    Hacer
		n=0;
		//Recorrer la lista
		Para i=2 Hasta l Con Paso 1 Hacer
			//Verificar si los dos valores estan ordenados
			Si lista[i-1]>lista[i]
				//Ordenar si es necesario
				temp=lista[i-1];
				lista[i-1]=lista[i];
				lista[i]=temp;
				n=i;
				mostrarLista(lista,lon);
			FinSi
			
		FinPara
		l=n;
	Hasta Que n=0;
FinProceso
//Función para mostrar estado de la lista
SubProceso mostrarLista(lista,lon)
	Para i=1 Hasta lon Con Paso 1 Hacer
		Escribir Sin Saltar lista[i] " ";
	FinPara
	Escribir "";
FinSubProcesoEspero que les sea de utilidad!