Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 9 / 15 Rūšiavimas be palyginimų ~55 min
Kodas

ncsort.go — karkasas

Sukurk ncsort.go (žr. dešinėje). Šeši parašai, ir vienas reikalavimas skiriasi nuo visų ankstesnių pamokų.

cmp.Hit() — nė karto

Iki šiol skaitikliai skaičiavo, kiek palyginimų. Čia testas reikalauja, kad jų būtų lygiai nulis.

cmp parametras vis tiek yra — kad parašas sutaptų su kitais rikiavimais ir kad testas galėtų įrodyti, jog skaičius nulinis. Jei kur nors atsiras cmp.Hit(), tai jau nebe skaičiavimo rikiavimas.

moves.Hit() lieka: po vieną kiekvienam į rezultatą įrašytam elementui.

Ką testas tikrins

  • CountingSortByRating — teisinga tvarka, 0 palyginimų, lygiai n judesių ir stabilumas;
  • RadixSortByYear — teisinga tvarka, 0 palyginimų;
  • RadixSortByYearUnstable — privalo nesurikiuoti, ir privalo atlikti tiek pat darbo kaip stabilus variantas.

Paskutinis punktas neįprastas: rašai funkciją, kuri turi būti neteisinga. Ji sugadinta tyčia, viena ciklo kryptimi, ir 7 žingsnyje pamatysi, kam.

Rėžiai, kuriuos jau turi

CountingSortByRating naudoja MinRating ir MaxRatingitem.go — konstantas, kurias parašei pirmoje pamokoje. yearDigit ir countingPass dirba su Year.

Nieko naujo pridėti nereikia. Prielaida, kurios reikia šiai pamokai, jau įrašyta tavo duomenų tipe aštuonios pamokos.