From: Brian Hurt <bhurt@spnz.org>
To: tmp123@menta.net
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Sorted list
Date: Sat, 4 Aug 2007 08:36:18 -0400 (EDT) [thread overview]
Message-ID: <Pine.LNX.4.64.0708040827540.20887@localhost> (raw)
In-Reply-To: <Pine.LNX.4.64.0708040754370.20887@localhost>
I forgot a bit of analysis as to why I recommend that data structure, and
not others. The advantage a priority queue has is that peeking at the
head node (highest priority) element is O(1), and in this case very fast.
This is in comparison with the O(log N) cost of using a map or tree-based
list. I was assuming that since you were implementing a timer queue, the
bulk of the accesses will be "has the next timer timed out yet? No-
moving on..."
You can implement a mutable version of the leftist heap, and keep a parent
pointer in the node. This allows you to remove an arbitrary node in O(log
N) time, during the delete function (as opposed to waiting for the timer
to time out to remove it). But it's a lot more complicated- the idea is
easier to see in the purely functional code.
If you want to use a map, have each element be a list of timers set to
expire at the same time.
Brian
next prev parent reply other threads:[~2007-08-04 12:25 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-04 9:35 tmp123
2007-08-04 10:00 ` [Caml-list] " Jon Harrop
2007-08-04 10:29 ` Philippe Wang
2007-08-04 11:22 ` skaller
2007-08-04 12:23 ` Philippe Wang
2007-08-04 13:39 ` skaller
2007-08-04 14:01 ` Philippe Wang
2007-08-04 14:45 ` skaller
2007-08-04 14:27 ` tmp123
2007-08-04 20:33 ` Christophe TROESTLER
2007-08-04 14:37 ` tmp123
2007-08-04 15:09 ` Brian Hurt
2007-08-04 15:42 ` skaller
2007-08-04 16:21 ` Richard Jones
2007-08-04 17:17 ` Brian Hurt
2007-08-04 18:24 ` skaller
2007-08-04 17:54 ` skaller
2007-08-04 19:16 ` Richard Jones
2007-08-05 16:22 ` David Allsopp
2007-08-05 16:41 ` Xavier Leroy
2007-08-05 17:01 ` David Allsopp
2007-08-04 17:35 ` Julien Moutinho
2007-08-04 18:04 ` skaller
2007-08-05 1:47 ` Jon Harrop
2007-08-05 11:44 ` Erik de Castro Lopo
2007-08-05 12:03 ` Jacques GARRIGUE
2007-08-05 12:31 ` Erik de Castro Lopo
2007-08-05 13:22 ` Richard Jones
2007-08-05 20:47 ` Erik de Castro Lopo
2007-08-05 13:17 ` Richard Jones
2007-08-05 16:26 ` Xavier Leroy
2007-08-05 23:47 ` skaller
2007-08-04 15:36 ` skaller
2007-08-04 15:17 ` tmp123
2007-08-12 12:05 ` Andrej Bauer
2007-08-04 12:15 ` Brian Hurt
2007-08-04 12:36 ` Brian Hurt [this message]
2007-08-04 13:49 ` skaller
2007-08-04 12:16 ` Daniel Bünzli
2007-08-04 12:58 ` Oliver Bandel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0708040827540.20887@localhost \
--to=bhurt@spnz.org \
--cc=caml-list@yquem.inria.fr \
--cc=tmp123@menta.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox