Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
mesilased
HV kasutaja
liitunud: 31.07.2004
|
02.01.2009 19:52:25
Hash table |
|
|
Tere,
Küsin nõu seoses ühe koolitööga, tegijamatel ei tohiks sellega probleeme olla... kirjutan C-s hashimistabelit kasutades linked listi kokkupõrgete lahendamiseks. Kõik on kena täpselt niikaua kuni on vaja kasutada funktsiooni search ja eelnevalt on hashitud mitu võtit samasse lahtrisse. Kuidas sel juhul teada saada millist võtit täpselt otsin, kuna listi LIFO strateegia annab alati viimasena tabelisse pandu?
Tänud
|
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
02.01.2009 20:35:23
|
|
|
Kas mitte hashtabeli/dictionary/muude taoliste kasutamise põhimõte ei olegi et 1 väärtus 1 key kohta ?
Ja kokkupõrge tuleks lahendada eelmise väärtuse ülekirjutamisega mitte uue lisamisega.
Miskit näidiskoodi ka näidata on mida täpsemalt üritad teha ja miks just nii ?
_________________ Upload.ee - eestimaine failiupload |
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
mesilased
HV kasutaja
liitunud: 31.07.2004
|
02.01.2009 21:04:27
|
|
|
Hashi-tabeli põhimõte ei ole 1 väärtus 1 lahtri kohta.... Hashimis funktsioon üritab väärtused lahtrisse jagada võimalikult suvaliselt et tekitada ühtlane statistiline jaotus. Lihtsamal juhul on selleks näiteks võti mod tabelisuurus. Ehk siis kui üritad sisestada võtit 867 tabelisse suurusega 30 on hashimise tulemus 867 mod 30 = 27 ning see läheb lahtrisse aadressiga 27. Ja kui nüüd võtta järgmiseks võtmeks 57 siis tuleb hashimise tulemuseks jälle 57 mod 30 = 27 ning võti pushitakse samasse lahtrisse. Eesmärgiks on esitada iga lahtrit linked listina mille pea mäluaadress säilitatakse tabelis ning iga uue võtme lisamisel pushitakse listi ühe koha võrra edasi. Näidiskood on suur ja küsimus on nagunii teoreetilist laadi.
Aga miks ma seda teha üritan? Kuna koolis on vaja
|
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
02.01.2009 21:21:05
|
|
|
Sa pead originaal (hashimata) võtme kaasa andma ja listi peal lihtsalt lineaarse otsingu tegema.
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
02.01.2009 22:51:16
|
|
|
Aa, selline hashtable, ma ajasin sassi java HashTable (ja muude samalaadsete) kasutusviisiga, my bad.
Ega vist muud võimalust jah ei ole kui originaal võtmega võrreldes antud listi elemendid läbi käia järjest kuna linkedlistil traditsioonilist binaarotsingut teha ei saa...
_________________ Upload.ee - eestimaine failiupload |
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
mesilased
HV kasutaja
liitunud: 31.07.2004
|
03.01.2009 15:18:29
|
|
|
troglodyte kirjutas: |
Sa pead originaal (hashimata) võtme kaasa andma ja listi peal lihtsalt lineaarse otsingu tegema. |
Suured tänud, nii töötab Mälu kulub ainult n võrra rohkem ning worstcase time complexity on O(1) asemel O(1+n)....
|
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|