<?php
// Time Complexity O(n^2)
// Space Complexity O(1)
function bubbleSort(array $items): array {
$len = count($items);
for ($i = 0; $i < $len; $i++) {
for ($j = $i + 1; $j < $len; $j++) {
if ($items[$j] < $items[$i]) {
$tmp = $items[$j];
$items[$j] = $items[$i];
$items[$i] = $tmp;
}
}
}
return $items;
}
$items = [ 4, 1, 5, 3, 2 ];
$sortItems = bubbleSort($items);
// sortItems is {1, 2, 3, 4, 5}
print_r($sortItems);
// *** simplified speed test ***
$items = [];
for ($i = 0; $i < 200; $i++) {
$items[$i] = $i;
}
$tmp = $items[5];
$items[5] = $items[6];
$items[6] = $tmp;
$count = 10000;
$start = strtotime("now");
for ($i = 0; $i < $count; $i++)
bubbleSort($items);
$seconds = strtotime("now") - $start;
echo $seconds;
// about 8 seconds