compare($item, $order)) { ++$pos; } } if ($pos === $start) { continue; } while ($item->equals($list[$pos])) { ++$pos; } if ($pos !== $start) { $old = $list[$pos]; $list[$pos] = $item; $item = $old; } while ($pos !== $start) { $pos = $start; for ($i = $start + 1; $i < $n; ++$i) { if (!$list[$i]->compare($item, $order)) { ++$pos; } } while ($item->equals($list[$pos])) { ++$pos; } if (!$item->equals($list[$pos])) { $old = $list[$pos]; $list[$pos] = $item; $item = $old; } } } return $list; } }