\log(\count($list)) * 2) { return HeapSort::sort($clone, $order); } return QuickSort::sort($clone); } /** * Partition list and return the size * * @param array $list List reference * @param int $lo Low or left side * @param int $hi High or right side * @param int $order Order type * * @return int * * @since 1.0.0 */ private static function partition(array &$list, int $lo, int $hi, int $order) : int { $pivot = $list[$hi]; $i = $lo; for ($j = $lo; $j < $hi; ++$j) { if ($list[$j]->compare($pivot, $order)) { $temp = $list[$j]; $list[$j] = $list[$i]; $list[$i] = $temp; ++$i; } } $list[$hi] = $list[$i]; $list[$i] = $pivot; return $i; } }