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

Содержимое удалено Содержимое добавлено
Строка 253:
==[[w:Perl|Perl]]==
<big><source lang="perl">
@out=(5,2,8,9,4,2,7,9,4,1,6,9,0);
$N=@out+0;
sub sortM{
 
my($array,$first,$last)=@_;
sub mergesort
my$middle=int(if($last+>$first)/2);{
{
my$middle=int(($array, last+$first, $last)=@_/2);
if sortM($last > array,$first,$middle);
sortM($array,$middle+1,$last);
{
my$j=0;
my$middle=int(($last+$first)/2);
$work[$j++]=$$array[$_]for($first..$last);
 
mergesort $middle=int(($array, $first, +$last)/2)if($middle>$last);
mergesort( my$array, n=$middle-$first+1, $last);
for ($i=$first, $j=0,$k=$n; $i<=$last;$i++){
if if(($j < $n) && (($k == (($last-$first)+1)) || ($work[$j] lt $work[$k]))) {
{
$work$array[$j++i]=$$arraywork[$ij++];
}else{
$$array[$i]=$work[$jk++];
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 sortM(\@out, 0, $N#out+1);
</source></big>