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

Matavimo aplinka ir nuosprendis

Trys failai vienu žingsniu. Du iš jų gauni pilnus — jie ne tavo užduotis.

sortbench.go — matavimo aplinka. prepare paruošia duomenis reikiama tvarka (shuffled, sorted, reverse, nearly), cmdSort paleidžia pasirinktus algoritmus ir surašo skaičius.

Vienas dalykas jame svarbus:

if !isSortedByTitle(data) {
    return fmt.Errorf("%s did NOT sort the data", name)
}

Kiekvienas matavimas pirma patikrina rezultatą. Neteisingo rikiavimo greitis nieko nereiškia — o neteisingas rikiavimas dažnai atrodo greitas, nes atlieka mažiau darbo. Šeštoje pamokoje tas pats principas buvo pavadintas „pirma įrodyk, kad tai ta pati funkcija".

sort_test.go — nuosprendis. Jo nerašai, bet jį praeini.

Ir main.go — dvi eilutės, kaip visada.

Ko reikalauja testas

Keturios grupės:

  1. Rikiuoja — įskaitant n = 0, 1, 2 ir 3. Tuščias masyvas ir vieno elemento masyvas turi praeiti be jokių specialių šakų tavo kode.
  2. Stabilumas — burbuliukų ir įterpimo. Tikrinama per ID, nes tik jie parodo, kas su kuo susikeitė.
  3. Nestabilumas — išrinkimo. Šis testas tvirtina trūkumą, kad jis liktų matomas.
  4. Tikslūs skaičiai — n−1, n(n−1)/2 ir kvadratinė lubų riba.

Jei testas praeina, tavo trys funkcijos yra teisingos ir turi teisingą kainą.