Упорядочить элементы массива

code: #perl
  1. #!/usr/bin/perl
  2.  
  3. use warnings;
  4.  
  5. sub nextPermutation($)
  6. {
  7.     my $p=shift;
  8.     my $i=$#$p-1;
  9.     $i-- while $i>=0 and $p->[$i]>$p->[$i+1];
  10.     if($i>=0)
  11.     {
  12.         my $j=$i+1;
  13.         $j++ while $j<$#$p and $p->[$j+1]>$p->[$i];
  14.         my $tmp=$p->[$i];
  15.         $p->[$i]=$p->[$j];
  16.         $p->[$j]=$tmp;
  17.         push @$p, reverse splice @$p, $i+1;
  18.         return $p;
  19.     }
  20.     return;
  21. }
  22.  
  23. my $n=shift;
  24. die "$0: Нужно неотрицательное число!\n" unless defined($n) and $n>=0;
  25.  
  26. for(my $p=[1..$n]; defined $p; $p=nextPermutation($p))
  27. {
  28.     print "@$p\n";
  29. }
Поделиться:

Похожие статьи: