Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 7 / 15 Elementarus rūšiavimas ~60 min
Namų darbas

Namų darbas

Ką atiduoti

algo su sort komanda, praeinantį go test ./..., ir matavimų ataskaitą.

1. Kvadratinė kreivė

Pamatuok visus tris algoritmus, n = 1 000 / 10 000 / 50 000, -order shuffled:

n algoritmas palyginimai sukeitimai laikas

Įrodyk, kad palyginimų skaičius auga ×100, kai n auga ×10. Ar tavo laikas auga taip pat? Jei ne — paaiškink, remdamasis 5 žingsniu.

(Šimto tūkstančių burbuliukų rikiavimo paleisti nebūtina — pamokoje tai užtruko pusantros minutės. Jei paleisi, užrašyk laiką.)

2. Keturios tvarkos

Vienas algoritmas — įterpimo — keturios tvarkos, n = 10 000:

tvarka palyginimai sukeitimai laikas
sorted
nearly
shuffled
reverse

Nurodyk santykį tarp geriausio ir blogiausio atvejo.

3. Sukeitimai prieš palyginimus

Išrinkimo rikiavimas atlieka daugiau palyginimų už burbuliukų ir vis tiek greitesnis.

Pamatuok abu ir apskaičiuok, kiek kartų vienas sukeitimas brangesnis už vieną palyginimą tavo mašinoje. Nurodyk skaičių ir kaip jį gavai.

4. Rikiavimo atsipirkimas

6 pamokos namų darbe skaičiavai, kiek dvejetainių paieškų atperka vieną sort.Slice.

Pakartok su savo rikiavimu. Kiek paieškų atperka vieną InsertionSort 100 000 įrašų? Ar atsakymas apskritai turi prasmę?

5. Sprendimas

Vienas pastraipos atsakymas: tavo bibliotekoje įrašai pridedami po vieną ir retkarčiais prireikia surikiuoto sąrašo.

Ką darysi? Rikiuosi kaskart? Laikysi nuolat surikiuotą? Rikiuosi tik prieš paiešką? Pagrįsk skaičiais iš 1 ir 2 punktų, ir pasakyk, kuris iš trijų algoritmų čia tinkamiausias — jei apskritai kuris nors.