[lug] Hash vs list
George Sexton
gsexton at mhsoftware.com
Sat Apr 22 18:44:15 MDT 2006
A binary search within an array could give a pretty good result. If the
output of the hash function is not really good then a binary search would
find a record in approximately 20 comparisons.
If the hash function is poor and there are a lot of collisions then you
could end up with a lot more than 20 comparisons.
Of course a binary search only works if the data is already sorted.
George Sexton
MH Software, Inc.
http://www.mhsoftware.com/
Voice: 303 438 9585
> -----Original Message-----
> From: lug-bounces at lug.boulder.co.us [mailto:lug-bounces at lug.boulder.co.us]
> On Behalf Of Jeff Schroeder
> Sent: Friday, April 21, 2006 6:11 PM
> To: LUG Boulder
> Subject: [lug] Hash vs list
>
> I'm curious whether searching for a single value in a hash is generally
> (always?) faster than searching for it in a list. The programming I'm
> doing is in PHP, but I think it's a question with a general answer.
>
> For example, assume I have a list of a million e-mail addresses [1] and
> I want to very quickly check whether a certain address is in that list.
> If I had a one-dimensional array, I could use the PHP function
> in_array() to determine whether I'm in the list:
>
> $address_list = array("guy at place.com", "god at heaven.org", ...);
> if(in_array("jeff at zingstudios.net", $address_list)) ...
>
> On the other hand, I could construct a hash with the same data:
>
> $address_list = array("guy at place.com" => 1, "god at heaven.org" => 1, ...);
> if($address_list{"jeff at zingstudios.net"}) ...
>
> Since hashes are designed to provide fast lookups of any given key, it
> seems to me that the second approach would yield results more
> efficiently. But I never took a data structures class, so I may be
> missing something.
>
> Thoughts?
>
> Thanks,
> Jeff
>
> [1] No, I'm not a spammer. :) It's just an example.
More information about the LUG
mailing list