(s = (h mod (T-2) +1)) eraldi sammu igale sõnale. Sõnade paigutamiseks on üldse ülesandes kokku neli algoritmi. Viimane võimalus ei kasuta lineaarset tabelit, nagu eelmised kolm, vaid jaotab selle kolme sõnalistesse pakkettidesse. Kokku on tabelis 11 paketti, seega 33 lahtrit sõnade paigutamiseks. ALGORITMIDE EFEKTIIVSUSE HINNANG Katsete graafikute uurimisel selgus, et kui paiskadresseerimist kasutada mõne suure reaalse tarkvara väljatöötamisel, tuleks paisktabel võtta võimalikult suur (umbes 60% - 70% suurem, kui tegelikult andmete hoidmiseks vaja oleks). See tagaks andmetele kiire juurdepääsu, kuna kollisioonide arv on seda väiksem, mida suurem on paisktabel. 3 VÕRDLUSTE ARVU SÕLTUVUS TABELI TÄITUVUSASTMEST (GRAAFIKUD) 6 5 4 3 2 1 0 0 5 10 15 20 25 30 6 5 4 3 2 1 0
Iga puu tipp on värvitud punaseks või mustaks. Jälgides tippude lisamisel ja kustutamisel teatud värvide skeemi saab säilitada puu mõistliku seisu. Reeglid – iga sõlm kas punane või must; tühjad alampuud on mustad; igal punasel sõlmel must vanem & mustad lapsed; iga tee, mis läheb puu juurest mõnda lehte, sisaldab sama arv musti sõlmi. Otsimise aeg 2*log(n+1). Puu must kõrgus – mustade tippude arv puu juurest leheni. 13. Paisksalvestusmeetod. Paisktabel. Paiskfunktsioon (jäägi meetod ja korrutamise meetod). Kollisioonide lahendamine (ahelad väljaspool tabelit, avatud paisksalvestus). Andmete lisamine, otsimine ja kustutamine. Paisksalvestusmeetod – igas kirjes eraldatakse üks väli, mis on võtmeks. Sellele võtmele rakendatakse paiskfn-i, mis vastavalt võtme väärtusele arvutab indeksi ehk tabeli lahtri aadressi. Paiskfn tuleb valida nii, et arvutuse tulemus mahuks tabeli indeksite vahemikku
vasakuks lapseks 3. pööre paremale - tipu Y vasak laps saab uueks (alam)puu juureks ning Y ise satub tema paremaks lapseks 13.7.3 Milleks kasutatakse Praktikas üks enam kasutatavatest isebalanseeruvatest otsimispuudest. Konteinerites “set” ja “map”. C++: STL library, Javas: klass “TreeMap” ja muudes realisatsioonides, kus on vaja kasutada assotsatiivset massiivi. 14. Paisksalvestusmeetod. Paisktabel. Paiskfunktsioon (jäägi meetod ja korrutamise meetod). Kollisisoonide lahendamine (ahelad väljaspool tabelit, avatud paisksalvestus ja erinevad sondeerimismeetodid). Andmete lisamine, otsimine ja kustutamine. 14.1 Paisksalvestusmeetod Def – algoritm, mis paneb suvalise pikkusega andmehulga vastavusse fikseeritud pikkusega andmehulgaga. • Mõistlik kasutada siis, kui struktuur, millega tegeldakse ei pea võimaldama muud kui lisamist,
Et pakkuda programmeerijale vahendeid tööks dünaamiliste (ajas muutuvate) andmekogumitega, on keeles Java terve komplekt liideseid ja klasse, millest mõnedega järgnevalt tutvume (need kuuluvad paketti java.util). Liideste nimed on kaldkirjas, klasside nimed alla joonitud. Collection Set SortedSet TreeSet (korduvate elementideta järjestatud hulk) List ArrayList (vektor, dünaamiline indekseeritav kogum, korduvad elemendid lubatud) Map HashMap (paisktabel, paaride "võti - väärtus" salvestamiseks; kujutis, mis seab võtmele vastavusse väärtuse) Iterator (liides andmekogumi elementide süstemaatiliseks läbikäimiseks) Comparable (liides kahe elemendi omavahelise järjestuse määramiseks) Collections (klassimeetodite kogum andmekogumitega manipuleerimiseks) See on ainult fragment kogupildist, tasuks siinkohal lugeda Java tutoriali ja dokumentatsiooni. Andmekogum (collection) koosneb elementidest. Selline kogum võib olla
..........................................................................67 Sortimine...........................................................................................................................68 Tüübimäärang................................................................................................................... 68 Järjekord............................................................................................................................69 Paisktabel.......................................................................................................................... 70 Ülesandeid.........................................................................................................................71 Andmebaasiliides..................................................................................................................71 Ühenduse loomine, päring......................................................................
using System; using System.Collections; class Kollektsioon3{ public static void Main(string[] arg){ Queue jarjekord=new Queue(); jarjekord.Enqueue("Juku"); jarjekord.Enqueue("Kati"); jarjekord.Enqueue("Mati"); while(jarjekord.Count>0){ string eesnimi=jarjekord.Dequeue() as string; Console.WriteLine(eesnimi); } } } /* D:kodu 606dotnet>Kollektsioon3 Juku Kati Mati */ Paisktabel Vahend andmepaaride hoidmiseks. Kord indekseerimise juures juba tutvusime selle vahendiga, siin nüüd vaatame talle veel korra otsa. Paisktabelis sobib hoida näiteks konfiguratsioonifailist loetud omaduste väärtusi, kasutajanimele vastavaid seadeid või tõlkefaili andmeid. Põhiliseks tingimuseks on, et võti (kasutajanimi või omaduse nimi) ei kordu ning võtme järgi saab küsida väärtuse. Siin näites hoitakse inimeste nimedele vastavaid hindeid. if(ht.ContainsKey("Kati")){
using System; using System.Collections; class Kollektsioon3{ public static void Main(string[] arg){ Queue jarjekord=new Queue(); jarjekord.Enqueue("Juku"); jarjekord.Enqueue("Kati"); jarjekord.Enqueue("Mati"); while(jarjekord.Count>0){ string eesnimi=jarjekord.Dequeue() as string; Console.WriteLine(eesnimi); } } } /* D:kodu 606dotnet>Kollektsioon3 Juku Kati Mati */ Paisktabel Vahend andmepaaride hoidmiseks. Kord indekseerimise juures juba tutvusime selle vahendiga, siin nüüd vaatame talle veel korra otsa. Paisktabelis sobib hoida näiteks konfiguratsioonifailist loetud omaduste väärtusi, kasutajanimele vastavaid seadeid või tõlkefaili andmeid. Põhiliseks tingimuseks on, et võti (kasutajanimi või omaduse nimi) ei kordu ning võtme järgi saab küsida väärtuse. Siin näites hoitakse inimeste nimedele vastavaid hindeid. if(ht