# Python implementation of bitsort algorithm from "Programming Pearls"
def bitsort(filename, maxn):
""" Sort a file named 'filename' which
consists of maxn integers where each
integer is less than maxn """
# Initialize bitmap
a = [0]*maxn
# Read from file and fill bitmap
for line in file(filename):
n = int(line.strip())
# Turn bits on for numbers
if n<maxn: a[n] = 1
# Return a generator that iterates over the list
for n in range(len(a)):
if a[n]==1: yield n
if __name__=="__main__":
# numbers.txt should contain a list of numbers
# each less than 1000000, one per line.
for num in bitsort('numbers.txt',1000000):
print num