DEV Community

Discussion on: Haskell Quicksort in JavaScript

Collapse
 
sebastianfrey profile image
Sebastian Frey

Or use nested ternary operators:

const qs = ([x, ...xs]) => x === undefined 
  ? xs.length === 0
  ? []
  : qs(xs)
  : [
    ...qs(xs.filter(s => s <= x)),
    x,
    ...qs(xs.filter(b => b > x))
  ]

let arr = [5, 3, 1, 8, 6, 0, 2, 4, 7, 9];

console.log(qs(arr));
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
darrylnoakes profile image
Darryl Noakes

I tried to figure out something like that, but got stuck.
Much better, thanks!

(Now to rerun the benchmarks...)

Thread Thread
 
darrylnoakes profile image
Darryl Noakes • Edited

New benchmark results:

Run 1:

  • native (23740) 100%
  • orig quicksort (15751) 66.35%
  • undefined-safe quicksort (15673) 66.02%

Run 2:

  • native (24123) 100%
  • orig quicksort (15903) 65.92%
  • undefined-safe quicksort (15776) 65.4%

New JSBen.ch test

P.S. I dunno why I have got so stuck into this benchmarking :).