OLW: #Quicksort

Here is a #oneliner in #Clojure which can run in the #Java Virtual Machine (#JVM).

(defn qsort [[pivot :as coll]] (when pivot (lazy-cat (qsort (filter #(< % pivot) coll)) (filter #{pivot} coll) (qsort (filter #(> % pivot) coll)))))

It lazily executes a quicksort and selects elements with the same value to be grouped together, which makes this implementation fast when many elements have duplicates.

“I like to play chess with bald men in the park, although it’s hard to find 32 of them.” – Emo Phillips

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s