2021-03-26
slides.com/jod/pt_14c
Docent: Jo Devriendt
Assistent: Ann Philips
Coördinator: Joost Vennekens
voornaam.achternaam@kuleuven.be
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Hashtabel is snel (bvb. tov zelf-balancerende zoekboom) indien er geen (of weinig) collisions optreden
Collisions hangen af van
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Veronderstel n key-waarde-paren en l de lengte van array
Bij hoge load factor, zorg dat l groter wordt!
Rehashing:
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Index | key-waarde |
---|---|
0 | |
1 | |
2 | |
3 | |
4 | |
5 |
"barack", 59
"joe", 78
"donald", 74
"george", 74
"bill", 74
Rehash naar l=12
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Index | key-waarde |
---|---|
0 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 |
"barack", 59
"joe", 78
"donald", 74
"george", 74
"bill", 74
Rehash naar l=12
Herbereken buckets
Verplaats key-waarde-paren naar nieuwe bucket
Naam | hash | hash%l (l=12) |
---|---|---|
bill | 35 | 11 |
george | 57 | 9 |
barack | 36 | 0 |
donald | 50 | 2 |
joe | 30 | 6 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Index | key-waarde |
---|---|
0 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 |
"barack", 59
"joe", 78
"donald", 74
"george", 74
"bill", 74
Rehash naar l=12
Herbereken buckets
Verplaats key-waarde-paren naar nieuwe bucket
Naam | hash | hash%l (l=12) |
---|---|---|
bill | 35 | 11 |
george | 57 | 9 |
barack | 36 | 0 |
donald | 50 | 2 |
joe | 30 | 6 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
key | hash |
---|---|
bill | 35 |
george | 57 |
barack | 36 |
donald | 50 |
joe | 30 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
key | hash |
---|---|
bill | 2090113448 |
george | 4286896414 |
barack | 4086564937 |
donald | 4181295159 |
joe | 193496195 |
// gebaseerd op http://www.cse.yorku.ca/~oz/hash.html
unsigned int hash(char *s) {
unsigned int hash = 5381; // magic number
while (*s != '\0') {
hash = hash*33 + *s; // magic number
++s;
}
return hash;
}
key | hash |
---|---|
bill | 35 |
george | 57 |
barack | 36 |
donald | 50 |
joe | 30 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021
Naam | Leeftijd |
---|---|
bill | 74 |
george | 74 |
barack | 59 |
donald | 74 |
joe | 78 |
Programmeertechnieken [B-KUL-YI0855]
De Nayer, IIW, E-ICT, 2Ba + schakel, 2020-2021