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

Содержимое удалено Содержимое добавлено
Строка 520:
== [[w:Perl|Perl]] ==
<big><source lang="perl">
@out=(6,4,2,8,5,3,1,6,8,4,3,2,7,9,1)
$N=@out+0;
if($N>1){
 
while ($sh+2!=$N){
if ($N>1) #Любой массив из одного символа уже отсортирован
$b=undef;
{
for my$i(0..$N-1){
while ($sh+2!=$N)
if($i*2+2+$sh<$N){
if($out[$i+$sh], gt$out[$i*2+1+$sh]) =|| ($out[$i*2+1+$sh], gt$out[$i*2+2+$sh]);{
$b=undef;
for if($i=0; out[$i<*2+1+$N; sh]lt$out[$i*2+2+$sh]){
($out[$i*2+1+$sh], $out[$i+$sh]) = ($out[$i+$sh], $out[$i*2+1+$sh]);
{
$b=1;
if ($i*2+2+$sh<$N)
if }elsif($out[$i*2+2+$sh] lt $out[$i*2+1+$sh]) {
{
if ( ($out[$i*2+2+$sh] gt ,$out[$i*2+1+$sh] ) || =($out[$i+$sh] gt ,$out[$i*2+2+$sh]) );
{$b=1;
if }
}elsif($out[$i*2+12+$sh] lt $out[$i*2+21+$sh]) {
($out[$i*2+1+$sh], $out[$i*2+2+$sh]) = ($out[$i*2+2+$sh], $out[$i*2+1+$sh]);
{
$b=1;
($out[$i*2+1+$sh], $out[$i+$sh]) = ($out[$i+$sh], $out[$i*2+1+$sh]);
{}
$b=1;
if }elsif($i*2+1+$sh<$N && $out[$i+$sh] gt $out[$i*2+1+$sh]){
}
elsif ($out[$i+$sh],$out[$i*2+21+$sh] lt )=($out[$i*2+1+$sh],$out[$i+$sh]) ;
{$b=1;
}
($out[$i*2+2+$sh], $out[$i+$sh]) = ($out[$i+$sh], $out[$i*2+2+$sh]);
$b=1;
}
}
if ($out[$i*2+2+$sh] lt $out[$i*2+1+$sh])
{
($out[$i*2+1+$sh], $out[$i*2+2+$sh]) = ($out[$i*2+2+$sh], $out[$i*2+1+$sh]);
$b=1;
}
}
elsif ($i*2+1+$sh < $N)
{
if ($out[$i+$sh] gt $out[$i*2+1+$sh])
{
($out[$i+$sh], $out[$i*2+1+$sh]) = ($out[$i*2+1+$sh], $out[$i+$sh]);
$b=1;
}
}
}
if (!$b) {$sh++;}
if ($sh+2 == $N) {last;}
}
++$sh if!$b;
last if ($sh+2 == $N) {last;}
}
}
</source></big>