# generic bubble sort in Perl # written Oct 02 by Ulrich Stern sub mysort { my ($ar, $n, $cmp) = @_; for (my $i=0; $i<$n-1; $i++) { for (my $j=$n-1; $j>$i; $j--) { if (! &$cmp($$ar[$j-1], $$ar[$j])) { my $tmp = $$ar[$j-1]; $$ar[$j-1] = $$ar[$j]; $$ar[$j] = $tmp; } } } } { package Range; sub new { my ($class, $lb, $ub) = @_; return bless { lb => $lb, ub => $ub }, $class; } sub toString { my $s = shift; return "[$$s{lb},$$s{ub}]"; } } sub compLB { my ($a, $b) = @_; return $$a{lb} < $$b{lb}; } sub compUB { my ($a, $b) = @_; return $$a{ub} < $$b{ub}; } sub main { my $N = 10000; my @a = (); for (my $i=0; $i<$N; $i++) { $a[$i] = new Range($i*7%1000, $i*13%1000); } print "sorting $N Ranges...\n"; mysort(\@a, $N, \&compLB); mysort(\@a, $N, \&compUB); print "done\n"; } main();