Previous Contents Next

Module Bubblesort

A functional implementation of bubble-sort.
module BubblesortFun (EORDERED) : SORT with type elem = Et =
   struct
     type elem = E.t

     let rec bubbleone (l1,l2) =
       match l1 with 
         [ ] ® ([ ], l2)
       | [x® ([ ],x::l2)
       | x1::x2::l ® 
           if (x1 £ x2)
           then 
             let (l1'l2') = bubbleone(x2::ll2)
             in 
             (x1::l1'l2')
           else 
             let (l1'l2') = bubbleone(x1::ll2)
             in 
             (x2::l1'l2')

     let sort l =
       let rec bubble_h(l1l2) = 
         match l1 with 
           [ ] ® l2
         | _ ® bubble_h (bubbleone(l1,l2))
       in 
       bubble_h (l, [ ])
   end
January 31, 2002
Previous Contents Next