Реализации алгоритмов/Сортировка/Слиянием: различия между версиями

Содержимое удалено Содержимое добавлено
Perl
Строка 249:
System.Console.ReadLine();
}
</source></big>
 
==[[w:Perl|Perl]]==
<big><source lang="perl">
$N=@out+0;
 
sub mergesort
{
my($array, $first, $last)=@_;
if($last > $first)
{
my$middle=int(($last+$first)/2);
 
mergesort($array, $first, $middle);
mergesort($array, $middle+1, $last);
for ($i=$first, $j=0; $i<=$last;)
{
$work[$j++]=$$array[$i++];
}
if ($middle > $last)
{
$middle=int(($first+$last)/2);
}
$n=$middle-$first+1;
for ($i=$first, $j=0, $k=$n; $i<=$last; $i++)
{
if (($j < $n) && (($k == (($last-$first)+1)) || ($work[$j] lt $work[$k])))
{
$$array[$i]=$work[$j++]
}
else
{
$$array[$i]=$work[$k++]
}
}
}
}
mergesort (\@out, 0, $N);
</source></big>