shuffling lines in a stream

Sean Kelly sean at invisibleduck.org
Fri Oct 10 10:02:54 PDT 2008


It would be slower than the seeking option, but something like a 
randomized mergesort would work as well.  If the program can buffer k 
lines in a file containing n lines, then read the first k lines into 
memory, shuffle them, and write them out to a temporary file.  Repeat 
until the input is exhausted.  Now randomly pick two of the temporary 
files and randomly merge them.  Repeat until two temporary files remain, 
then output the result of the final random merge to the screen.

For small files (ie. where n<k) the file would be read, shuffled in 
memory, and printed to the screen, assuming the proper checks were in place.


Sean



More information about the Digitalmars-d mailing list