Golf Me A Bubble Sort
Haskell, 55 53 bytes

f(a:b:c)=min a b:f(max a b:c)
f x=x
foldr(\_-&gt;f)=&lt;&lt;id


Usage example: foldr(\_-&gt;f)=&lt;&lt;id $ [3,1,6,4,3,8,3,1,1,2] -> [1,1,1,2,3,3,3,4,6,8]. Try it online!.

How it works: f does one iteration by keeping the minimum of the first two elements and appending a recursive call with the maximum of the first two elements and all the other elements. It stops when there are less than two  elements in the list. The main function calls f length &lt;input&gt; times by iterating over the input list via fold but ignoring the elements.