# L-13 MCS 275 Wed 13 Feb 2008 : quicksort.py

from random import randint

def QuickSort(L):
   """
   Returns a list with the data of L
   sorted in increasing order.
   """
   print 'L =', L
   if len(L) <= 1:
      return L
   else:
      left = []; right = []
      for k in range(1,len(L)):
         if L[k] < L[0]:
            left.append(L[k])
         else:
            right.append(L[k])
      S = QuickSort(left)
      S.append(L[0])
      return S + QuickSort(right)

def main():
   """
   Calls QuickSort on a list of
   randomly generated numbers.
   """
   a = input('Give lower bound : ')
   b = input('Give lower bound : ')
   N = input('How many numbers ? ')
   r = lambda i: randint(a,b)
   L = map(r,range(0,N))
   print 'L =', L
   S = QuickSort(L)
   print 'S =', S

main()
