That's really no different from just sorting the list and taking the first
5.  O(n log(n)).
And for really large data sets, this is going to consume a lot of memory.

The method I outlined would be O(n) and doesn't force the sequence to all be
resident in memory at the same time.

On Fri, Sep 16, 2011 at 6:22 AM, Jim Oly <james...@gmail.com> wrote:

> Using PriorityQueue should give a good, fast result. Here's my
> implementation:
>
> (defn smallest-n [n xs]
>  (let [q (java.util.PriorityQueue. xs)]
>    (for [i (range n)] (.poll q))))
>
> (smallest-n 5 (shuffle (range 100)))
> ;; (0 1 2 3 4)
>
> Jim
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to