bsort :: Ord a => [a] -> [a]
bsort s = case bsort' s of
t | t == s -> t
| otherwise -> bsort t
where bsort' (x:x2:xs) | x > x2 = x2:(bsort' (x:xs))
| otherwise = x:(bsort' (x2:xs))
bsort' s = s