Grokking Algorithms



Yüklə 348,95 Kb.
Pdf görüntüsü
səhifə49/122
tarix05.12.2023
ölçüsü348,95 Kb.
#173611
1   ...   45   46   47   48   49   50   51   52   ...   122
grokking-algorithms-illustrated-programmers-curious

Chapter 5
 
 
I
 
 
Hash tables
In this example, both “apple” and “avocado” map to the same slot. 
So you start a linked list at that slot. If you need to know the price of 
bananas, it’s still quick. If you need to know the price of apples, it’s a 
little slower. You have to search through this linked list to find “apple”. If 
the linked list is small, no big deal—you have to search through three or 
four elements. But suppose you work at a grocery store where you only 
sell produce that starts with the letter 
A
.
Hey, wait a minute! The entire hash table is totally empty except for one 
slot. And that slot has a giant linked list! Every single element in this 
hash table is in the linked list. That’s as bad as putting everything in a 
linked list to begin with. It’s going to slow down your hash table.
There are two lessons here:
• 
Your hash function is really important. 
Your hash function mapped 
all the keys to a single slot. Ideally, your hash function would map 
keys evenly all over the hash.
• If those linked lists get long, it slows down your hash table a lot. But 
they won’t get long if you 
use a good hash function
!
Hash functions are important. A good hash function will give you very 
few collisions. So how do you pick a good hash function? That’s coming 
up in the next section!
Performance
You started this chapter at the grocery store. You wanted to build 
something that would give you the prices for produce 
instantly
. Well, 
hash tables are really fast.
In the average case, hash tables take O(1) for everything. O(1) is called 
constant time
. You haven’t seen constant time before. It doesn’t mean 


89
Performance
instant. It means the time taken will stay the same, regardless of how
big the hash table is. For example, you know that simple search takes 
linear time.
Binary search is faster—it takes log time:
Looking something up in a hash table takes constant time.
See how it’s a flat line? That means it doesn’t matter whether your hash 
table has 1 element or 1 billion elements—getting something out of 
a hash table will take the same amount of time. Actually, you’ve seen 
constant time before. Getting an item out of an array takes constant 
time. It doesn’t matter how big your array is; it takes the same amount 
of time to get an element. In the average case, hash tables are really fast.


90

Yüklə 348,95 Kb.

Dostları ilə paylaş:
1   ...   45   46   47   48   49   50   51   52   ...   122




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin