sort
The sort pragma
allows you to control sort()
behavior. In Perl 5.6 and earlier, the default sort() behavior was written with quicksort. Perl 5.8, with which sort.pm is shipped in the source kit,
implements mergesort. mergesort guarantees the worst-case behavior
of O(N log N), where quicksort guarantees O(N ** 2).
Perl 5.8 and later shuffle large arrays before sorting. Note that sort.pm is global and not lexical in scope.
For example:
#!/usr/local/bin/perl -w use sort '_quicksort'; # Or _qsort, if you'd like sort(@something);
mergesort is better than
quicksort for several reasons.
First, mergesort is more stable and
does fewer comparisons than quicksort, so it’s better for more
complicated sorting routines. In addition, mergesort takes preexisting order into
account.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access