Book HomeJava and XSLTSearch this book

8.188. 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.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.