гинеколог отечественного веб-дизайна (ao_mmm) wrote,
гинеколог отечественного веб-дизайна
ao_mmm

Реализация быстрой сортировки Хоара на Haskellе:

qsort [] = [] 
qsort (x:xs) = qsort [y | y <- xs, y < x ] ++ [x] ++ qsort [y | y <- xs, y >= x]

Те же яйца на PHP с небольшим сахарком в виде 2х функций listTail и listHead. Можно двинутья как в одну сторону, заменив listHead на reset -- и таким образом получив "чистый" пхп, так и в другую -- сделав обёртки для create_function (createComparator), array_merge (createList).

function quicksortFpStyle(array $list) {

    return empty($list) ?
        array() :
        array_merge(
            quicksortFpStyle( array_filter(listTail($list), create_function('$elem', 'return $elem <  ' . listHead($list)  . ';') ) ),
            array( listHead($list) ),
            quicksortFpStyle( array_filter(listTail($list), create_function('$elem', 'return $elem >= ' . listHead($list)  . ';') ) )
        );
}

function listTail(array $list) { return array_slice($list, 1); }
function listHead(array $list) { return reset($list); }
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 3 comments