Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
sink a (r1:rs) | r1 > a = r1:(sink a rs)
sink a l = a:l
kmin k len r (a:l) = kmin k len1 r1 l
where
r1 = if len<k then sink a r
else drop 1 $ sink a r
len1 = if len<k then len+1 else len
kmin _ _ r _ = r
mink k l = reverse $ kmin k 0 [] l
То есть попась в случай, когда опорный элемент оказался в хвосте — очень даже вероятно.
В подавляющем большинстве случаев будет массовая и затратная операция над данными.
Ленивые вычисления