##Haskell, 38 bytes
Haskell, 38 bytes
h%t|(a,b)<-span(<h)t=a++h:b
foldr(%)[]
The binary function %
insert a new element h
into a sorted list t
by partitioning t
into a prefix a
of elements <h
and a suffix b
of elements >h
, and sticks in h
between them.
The operation foldr(%)[]
then builds up a sorted list from empty by repeatedly inserting elements from the input list.
This is one byte shorter than the direct recursive implementation
f(h:t)|(a,b)<-span(<h)$f t=a++h:b
f x=x
Another strategy for 41 bytes:
f[]=[]
f l|x<-minimum l=x:f(filter(/=x)l)