sub sortQ2 { my ($s, $e, $dst) = @_; my $m = $s - 1; ($dst->[$_] < $dst->[$e]) && ( ++$m, ($dst->[$m], $dst->[$_]) = ($dst->[$_], $dst->[$m]), ) for ($s .. $e-1); ++$m; ($dst->[$m], $dst->[$e]) = ($dst->[$e], $dst->[$m]); sortQ2($s, $m-1, $dst) if ($s < $m - 1); sortQ2($m+1, $e, $dst) if ($m + 1 < $e); }