Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 2 / 15 Masyvai ir dinaminiai masyvai ~45 min
Namų darbas

Namų darbas

Ką atiduoti

algo su load ir stats komandomis, praeinantį go test ./..., ir matavimų lentelę.

1. Savo augimo kreivė

Pakartok 2 žingsnio lentelę savo kompiuteryje, n = 1 000 … 1 000 000:

n perkėlimai perkopijuota vidurkis vienam append

Paskutinis stulpelis turi nustoti augti. Nurodyk, ties kuriuo n jis nusistovi, ir prie kokios reikšmės.

2. Rezervuota talpa

Pakartok tą patį su make([]Item, 0, n). Užpildyk tą pačią lentelę.

Kiek perkėlimų? Kiek perkopijuota? Vienu sakiniu paaiškink, kodėl.

3. Kur amortizacija nepadeda

Sukurk atvejį, kuriame append amortizacija neveikia: kaskart pasiekęs talpą, nukirpk slice atgal iki cap-1 ir vėl pridėk.

Kiek kopijavimų vienam append gauni dabar? Paaiškink, kodėl amortizuota analizė čia negalioja.

4. Įterpimas prieš pridėjimą

Pastatyk 100 000 įrašų biblioteką dviem būdais:

  • a) append gale — 100 000 kartų;
  • b) InsertAt(lib, 0, it) — visada į pradžią.

Suskaičiuok pasislinkimus abiem atvejais. Skirtumas turi būti keturių eilių dydžio. Nurodyk abu skaičius ir jų santykį.

5. Kada masyvas yra blogas pasirinkimas

Vienas pastraipos atsakymas, su skaičiais: aprašyk konkretų naudojimo scenarijų, kuriame []Item yra netinkama struktūra, ir pasakyk, kurios operacijos jį žlugdo.

(Trečioji pamoka pradės nuo lygiai tokio scenarijaus.)