##Haskell, 38 bytes

<!-- language-all: lang-haskell -->

    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)