Skip to content

Instantly share code, notes, and snippets.

@apaleslimghost
Forked from kangax/quicksort.hs
Created October 6, 2015 07:51
Show Gist options
  • Save apaleslimghost/e55ee43667a42f3e8cdc to your computer and use it in GitHub Desktop.
Save apaleslimghost/e55ee43667a42f3e8cdc to your computer and use it in GitHub Desktop.

Revisions

  1. @kangax kangax revised this gist Oct 6, 2015. 1 changed file with 6 additions and 14 deletions.
    20 changes: 6 additions & 14 deletions quicksort.js
    Original file line number Diff line number Diff line change
    @@ -1,11 +1,7 @@
    /*
    passing array
    quicksort([4,3,2,1]); // => [1,2,3,4]
    1) passing array
    > quicksort([4,3,2,1]); // => [1,2,3,4]
    */

    function quicksort(tail) {
    if (tail.length === 0) return [];
    let head = tail.splice(0, 1)[0];
    @@ -15,15 +11,11 @@ function quicksort(tail) {
    }

    /*
    via arguments
    quicksort(4,3,2,1); // => [1,2,3,4]
    or:
    quicksort(...[4,3,2,1]); // => [1,2,3,4]
    2) via arguments
    > quicksort(4,3,2,1); // => [1,2,3,4]
    or:
    > quicksort(...[4,3,2,1]); // => [1,2,3,4]
    */

    function quicksort(x, ...xs) {
    if (arguments.length === 0) return [];
    return quicksort(...xs.filter( _ => _ <= x))
  2. @kangax kangax renamed this gist Oct 6, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. @kangax kangax renamed this gist Oct 6, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. @kangax kangax revised this gist Oct 6, 2015. 1 changed file with 32 additions and 0 deletions.
    32 changes: 32 additions & 0 deletions gistfile2.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    /*

    passing array

    quicksort([4,3,2,1]); // => [1,2,3,4]

    */

    function quicksort(tail) {
    if (tail.length === 0) return [];
    let head = tail.splice(0, 1)[0];
    return quicksort(tail.filter( _ => _ <= head))
    .concat([head])
    .concat(quicksort(tail.filter( _ => _ > head )))
    }

    /*

    via arguments

    quicksort(4,3,2,1); // => [1,2,3,4]
    or:
    quicksort(...[4,3,2,1]); // => [1,2,3,4]

    */

    function quicksort(x, ...xs) {
    if (arguments.length === 0) return [];
    return quicksort(...xs.filter( _ => _ <= x))
    .concat([x])
    .concat(quicksort(...xs.filter( _ => _ > x )))
    }
  5. @kangax kangax renamed this gist Oct 6, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  6. @kangax kangax created this gist Oct 6, 2015.
    6 changes: 6 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    quicksort :: (Ord a) => [a] -> [a]
    quicksort [] = []
    quicksort (x:xs) =
    let smallerSorted = quicksort (filter (<=x) xs)
    biggerSorted = quicksort (filter (>x) xs)
    in smallerSorted ++ [x] ++ biggerSorted