3-way Radix Quicksort

Dijkstra’ning 3-way partitioning quicksort algoritmi bilan tanishib chiqqan bo’lsangiz kerak. U quicksort‘dagi bir xil key’lar uchragan holatida ishlash vaqti ortishining oldini oladi. Biz 3-way quicksort’ga qaytamiz, bu safar bo’luvchi element – pivot’ni key belgilaridan olamiz.

3-way Radix Quicksort ishlash tartibi

Bizda quyidagi ro’yhat bor bo’lsin:

she
sells
seashells
by
the
sea
shore
the
shells
she
sells
are
surely
seashells

Birinchi key – «she» ning birinchi belgisi – s ni bo’luvchi element deb olamiz va ro’yhatni s dan kichik hamda s dan katta ko’rinishida tartiblaymiz:

by
are

seashells
she
seashells
sea
shore
surely
shells
she
sells
sells

the
the

3 qismga ajratdik. pivot oraliq «s…» ning chap qismi uchun yana 3 qismga ajratishni qo’llaymiz.

are
by

seashells
she
seashells
sea
shore
surely
shells
she
sells
sells

the
the

Pivot oraliq uchun esa bo’lishga birinchi key’dagi s dan keyingi belgini tanlaymiz. Birinchi so’z – «seashells», s dan keyingi harf – e. Demak, e bo’luvchi bo’lib, «s…» key’lar «se» dan kichkina, «se» bilan boshlanuvchi va «se» dan katta qilib 3 ga bo’linadi.

are

by

seashells
sells
seashells
sea
sells

shells
she
surely
shore
she

the
the

«s» bilan boshlanuvchi key’lar ichida «se» dan kichkinalari bo’lmagani uchun «se» bilan boshlanuvchi va «se» dan katta qismlarga ajraldi. Ularni ham alohida-alohida partition’ga ajratamiz

are

by

seashells
seashells
sea

sells
sells

shells
she
shore
she

surely

the
the

Shu tariqa, partition’ga ajratishni davom ettiramiz:

are

by

sea
seashells
seashells

sells
sells

shells
she
she

shore

surely

the
the

Keyingi qadam:

are

by

sea

seashells
seashells

sells
sells

she
she

shells

shore

surely

the
the

Yakunda tartiblangan ro’yhat quyidagi ko’rinishga keladi:

are
by
sea
seashells
seashells
sells
sells
she
she
shells
shore
surely
the
the

Kod

Kod ham 3-way partitioning funksiyasining biroz o’zgargan varianti.