compare($list[$i + 1], $order)) { $old = $list[$i]; $list[$i] = $list[$i + 1]; $list[$i + 1] = $old; $newEnd = $i; } } $end = $newEnd - 1; for ($i = $end; $i >= $start; --$i) { if ($list[$i]->compare($list[$i + 1], $order)) { $old = $list[$i]; $list[$i] = $list[$i + 1]; $list[$i + 1] = $old; $newStart = $i; } } $start = $newStart + 1; } return $list; } }