list - ocaml bubble sort -
my basic idea implement bubble sort of type ('a list -> 'a list). use variables sorted , result. if change of elements in list, sorted becomes 1. otherwise, sorted remains 0. result 1 cycle of comparison.
i think there wrong sorted variable. can figure out problem is?
let rec sort (l: int list) : int list = let sorted=0 in let result = match l | []->[] | x::xs-> if xs=[] x else let y::ys = xs in if x<y x::sort(xs) else let sorted=1 in y::sort(x::ys) in if sorted=0 result else sort(result)
it seems me you're trying use sorted mutable variable. ocaml variables immutable. once bind variable value, binding can't changed. each of let sorted = statements defines new variable named sorted. last test show sorted equal 0. testing first definition of sorted, can never have other value 0.
Comments
Post a Comment