http://www.perlmonks.org?node_id=589493


in reply to For Loops and Reversing output

I think people thought 'homework', as did I, because not being allowed to use 'reverse' sounds like a completely arbitrary restriction, typical of academic qns designed to force you to learn more about the lang.
Nothing wrong with that in that env, of course, but definitely unusual in real world.
I'm guessing that maybe the amt of data involved in the up-coming job is extremely large & using reverse would cause perf/mem issues? Maybe embedded code?
Cheers
Chris

Replies are listed 'Best First'.
Re^2: For Loops and Reversing output
by ikegami (Patriarch) on Dec 13, 2006 at 06:31 UTC

    reverse sort uses no more memory than sort.

    I've showed earlier in this thread that reverse sort is just as fast as sort. That's because an optimization causes reverse sort to sort the list in the reverse order rather than sorting the list then reversing it. That also means that reverse sort uses no more memory than sort.

    However, reversing an already sorted list takes more time and memory than not reversing it.

    Based on a reply the OP made, I suspect he will be receiving the list already sorted in the reverse of the desired order. If that's the case, then reversing the list then iterating over it would take time and memory, while iterating over the list from end to start could avoid using time and memory.

    Compare

    my @reversed = reverse @sorted; for my $i (0..$#reversed) { print $reversed[$i], "\n"; }

    against

    for (my $i=$#sorted; $i>=0; $i--) { print $sorted[$i], "\n"; }