[JÄRGMINE] Infoandmed
[EELMINE] Arvud
[SISUKORD]
[ENGLISH]
8 SORTIMINE
Sortimine on infosüsteemide levinuim operatsioon. Erinevates
rakendustes kasutatakse erinevaid sortimisalgoritme. Sortimine
põhineb märkidele omistatud kaaludel. Eestikeelsetes tekstides
kasutame viit tüüpi kaalusid:
AW -- Tähtede ja numbrite kaal (Cultural Alphanumeric Weight). Kaal
omab väärtusi ainult tähtede ja numbrite jaoks.
Ülejäänud märgid, näiteks kirjavahemärgid ei
oma kaalu. Neid märke arvestatakse sortimisel vähemkaalukaina.
Suur- ja väiketähtede kaalud on võrdsed. Eesti
tähestikku mittekuuluvatel diakriitikuga tähtedel on reeglina
sama kaal, mis vastaval diakriitikuta tähel: näiteks à,
A, ja a AW-kaal on 91. Vastavalt rahvusvahelistele kokkulepetele on ladina
tähtede jaoks reserveeritud kaalud vahemikus 91-132.
DW -- Diakriitiku kaal (Cultural Diacritic Weight). Diakriitikutega
märke sisaldavaid tekste järjestatakse eesti keeles esimesel
lähendusel samamoodi kui diakriitikuta tekste. Kahe sama
prototüübiga diakriitikuga tähe (näiteks ã ja
à) võrdlemiseks tuleb märkidele omistada DW-kaal.
Ladina tähestikus kasutatakse vastavalt rahvusvahelistele
kokkulepetele järgmisi kaale:
32 Diakriitikuta märk (no diacritic)
33 Märgi teisend (variant)
34 Liitmärk (ligature)
35 Akuut (acute)
36 Graavis (grave)
37 Kaar (breve)
38 Tsirkumfleks (circumflex)
39 Linnuke (caron, hacek)
40 Ülasõõr (overcircle)
41 Treema, täpid (diaresis or umlaut)
42 (diaresis and acute)
43 Topeltakuut (double acute)
44 Tilde (tilde)
45 Ülapunkt (overdot)
46 Ülakriips (macron)
47 Reserveeritud
48 Punkt keskel (middle dot)
49 Kaldkriips (stroke)
50 Sedii (cedilla)
51 Pöördsedii (ogonek)
52 Alapunkt (underdot)
53 Alakriips (underline)
54 Reserveeritud
CW -- Kultuurile omane registrikaal (Cultural Case Weight). Eesti keele
jaoks rakendatakse ladina tähestikuga maades standardselt
kasutatavaid kaale:
1 Reserveeritud
2 Reserveeritud
3 Väiketähed, numbrid ja ülejäänud kirjamärgid
4 Väiketähed ja numbrid indeksina
5 Väiketähed ja numbrid ülaindeksina
6 Reserveeritud
7 Suurtähed
8 Suurtähed indeksina
9 Suurtähed ülaindeksina
11 Murdarv 1/8
12 Murdarv 1/4
13 Murdarv 3/8
14 Murdarv 1/2
15 Murdarv 5/8
16 Murdarv 3/4
17 Murdarv 7/8
18 Reserveeritud
SW -- Erimärkide kaal (Cultural Special Weight)
Eesti tähestikus numbritel ja tähtedel SW-kaal puudub. SW-kaal
on ülejäänud märkidel. SW-kaal tagab erimärke
sisaldavate tekstide omavahelise järjestuse.
SH -- Jaoskaal (Shared Weight).
Eesti keele jaoks SH-kaal on lähedane AW-kaalule. Erinevused on
erimärkide ja tähe ß puhul. SH-kaal ei taga seega
korrektset järjestust.
Tekstide järjestamiseks on kasutusel neli viisi. Koigis neis
moodustatakse teksti põhjal ülalkirjeldatud kaale kasutades
sortimisvõti. Tekstide järjestus määratakse
sortimisvõtmete leksikograafilise järjestusega.
- I. Ainukaaludega sortimisvõti.
- Meetod tagab "kiire ja räpaka" järjestuse. Igale
märgile omistatakse järjestikku kaal 0-st (SP) kuni 190-ni.
- II. Jaoskaaluga sortimisvõti.
- Meetod tagab üsna täpse järjestuse. Igale märgile
omistatakse SH-kaal vastavalt tabeli 8.1
viimasele veerule.
- III. Tekstivõti.
- Meetod tagab Eesti keelenõuetele täpselt vastava
järjestuse. Võti moodustakse järgmiselt.
- Moodustatakse AW-kaaludele vastav string. Iga märgi AW-kaal
võetakse tabelist 8.1 (veerg AW). Nii
on sõna "Co-op" AW-string X'5E707072', sõnal
"coté" X'5E707761'.
- Moodustatakse esialgne DW-string. Iga märgi DW-kaal
võetakse tabelist 8.1 (veerg DW).
Sõna "Co-op" algne DW-string on X'20202020', sõnal
"coté" X'20202023'.
- Algne DW-string pööratakse ümber.
- Saadud stringist eemaldatakse stringi lõpust alates ettepoole
koodid kuni esimese X'20'-st erineva koodini. Lõplik DW-string
sõnal "Co-op" on X'', sõnal
"coté" X'23'. Antud samm pole kohustuslik.
- Moodustatakse esialgne CW-string. Iga märgi kaal võetakse
tabelist 8.1 (veerg CW). Sõna
"Co-op" algne CW-string on X'07030303', sõnal
"coté" X'03030303'.
- Saadud stringist eemaldatakse stringi lõpust alates ettepoole
koodid kuni esimese X'03'-st erineva koodini. Lõplik CW-string
sõnal "Co-op" on X'07', sõnal
"coté" X''. Antud samm pole kohustuslik.
- Moodustatakse SW-kaaludele vastav string. Iga märgi SW-kaal
võetakse tabelist 8.1 (veerg SW). Kui
tabelis vastaval märgil puudub SW-kaal, siis vastav märk
jäetakse vahele. Igale mittetühja SW kaalu ette lisatakse
märgi positsioon (järjenumber) tekstis. Nii on sõna
"Co-op" SW-string X'0307' (märk "-" positsioonis
3), sõnal "coté" X''.
- Tekstivõti moodustatakse stringidest AW-string, DW-string,
CW-string, X'00', SW-string. Nii saame sõnale "Co-op"
tekstivõtme X'5E70707207000307', sõnale
"coté" X'5E7077612300'.
- IV. Stringivõti.
- Meetod tagab mõnedes rakendustes (kus on vaja arvestada
erimärke, teksti jaotust veergudesse jms) mugavama järjestuse.
Siin kasutatakse esimese võtmena SH-stringi, välja on
jäetud SW- string. Võtme moodustamine toimub järgmiste
etappidena.
- Moodustatakse SH-kaaludele vastav string. Iga märgi SH-kaal
võetakse tabelist 8.1 (veerg SH). Nii
on sõna "Co-op" SH-string X'4854055455' sõnal
"coté" X'4854594A'.
- Moodustatakse algne DW-string. Iga märgi DW-kaal võetakse
tabelist 8.1 (veerg DW). Sõna
"Co-op" algne DW-string on X'20202020', sõnal
"coté" X'20202023'.
- Algne DW-string pööratakse ümber.
- Saadud stringist eemaldatakse stringi lõpust alates ettepoole
koodid kuni esimese X'20'-st erineva koodini. Lõplik DW-string
sõnal "Co-op" on X'', sõnal
"coté" X'23'.
- Moodustatakse algne CW-string. Iga märgi kaal võetakse tabelist 8.1 (veerg CW). Sõna
"Co-op" algne CW-string on X'07030303', sõnal
"coté" X'03030303'.
- Saadud stringist eemaldatakse alates stringi algusest koodid kuni
esimese X'03'-st erineva koodini. Lõplik CW-string sõnal
"Co-op" on X'07', sõnal "coté" X''.
- SW-stringi ei moodustata.
- Stringivoti moodustatakse stringidest SH-string, X'00', DW-string,
CW-string. Nii saame sõnale "Co-op" stringivõtme
X'48540554550007', sõnale "coté"
X'4854594A0023'.
Tabel 8.1 kujutab Eesti sortimisvõtmete
tabelit.
[JÄRGMINE] Infoandmed
[EELMINE] Arvud
[SISUKORD]