Multi-Level Sort with the Schwartzian Transform






Multi-Level Sort with the Schwartzian Transform

If we need to sort on more than one criterion, the Schwartzian Transform is still up to the task.

my @output_data =
  map $_->[0],
  sort { SORT COMPARISON USING $a->[1] AND $b->[1] or
          ANOTHER USING $a->[2] AND $b->[2] or
      YET ANOTHER USING $a->[3] AND $b->[3] }
  map [ $_, SOME FUNCTION OF $_, ANOTHER, YET ANOTHER ],
  @input_data;

This code skeleton has a three-level sort comparison, using three computed values saved in the anonymous array (alongside the original data item to be sorted, which always comes first).



 Python   SQL   Java   php   Perl 
 game development   web development   internet   *nix   graphics   hardware 
 telecommunications   C++ 
 Flash   Active Directory   Windows