Implementación del algoritmo Bubble Sort (ordenamiento de burbuja) en PHP
Por
Darío Rivera
Publicado el
en
PHP
Si aún no sabes qué es el Bubble Sort te invito a ver nuestro anterior post Algoritmo de Ordenamiento de Burbuja. En esta oportunidad veremos una implementación del algoritmo de ordenamiento de burbuja o Bubble Sort en PHP. Let's do it!.
class BubbleSort
{
public static function sort(array $collection): array
{
$n = count($collection);
for ($i = 1; $i <= $n - 1; $i++) {
for ($j = 1; $j <= $n - $i; $j++) {
$item = $collection[$j - 1];
$nextItem = $collection[$j];
if ($item > $nextItem) {
$collection[$j - 1] = $nextItem;
$collection[$j] = $item;
}
}
}
return $collection;
}
}
Para ordenar un array de elementos desordenada basta utilizar la función estática de esta clase así.
$collection = [30, 20, 10, 5, 0];
$ordered = BubbleSort::sort($collection); // [0, 5, 10, 20, 30]
Implementación Optimizada
Para evitar que el algoritmo realice la misma serie de iteraciones aún si recibiera una collección de elementos ordenada, podemos agregar una variable que indique si se hizo intercambio en la última iteración y de esta manera optimizar el algoritmo.
class BubbleSort
{
public static function sort(array $collection): array
{
$n = count($collection);
for ($i = 1; $i <= $n - 1; $i++) {
$swapped = false;
for ($j = 1; $j <= $n - $i; $j++) {
$item = $collection[$j - 1];
$nextItem = $collection[$j];
if ($item > $nextItem) {
$swapped = true;
$collection[$j - 1] = $nextItem;
$collection[$j] = $item;
}
}
if (!$swapped) {
break;
}
}
return $collection;
}
}