Sunteți pe pagina 1din 11

Lucrarea de laborator N 10

Arhitectura și design-ul algoritmilor sortării interne a datelor


Indicaţii metodice
Drept sortare se consideră procedura ce contribuie la repartizarea înregistrărilor CD în depindere de valorile cheilor
într-o anumită ordine.
Ca regulă se sortează numai acele înregistrări ce sunt ambalate şi organizate prin metoda succesivă. Celelalte metode
de ambalare iniţial sunt orientate spre o anumită organizare a datelor în depindere de particularităţile soluţionării
problemelor concrete.
Necesitatea sortării fişierelor este justificată prin faptul că contribuie la reducerea timpului de efectuare a aşa
proceduri ca căutarea, prelucrarea, intersectarea fişierelor ş.a. Afară de acesta documentele rezultative perfectare pe baza
fişierelor de date ordonate sunt destul de acceptabile în procesul de analiză funcţională a datelor.
În depindere de tipul de memorie implicat nemijlocit deosebim 2 grupe de metode de sortare:
1. Metode de sortare internă, ce necesită în procesul de sortare utilizarea numai a memoriei interne a calculatorului;
2. Metode de sortare externă, ce necesită utilizarea în procesul de sortare nu numai a memoriei interne, dar şi a
memoriei externe.
Pentru descrierea procesului de sortare e important de menţionat principalele noţiuni, care vor fi utilizate aici:
lungimea diapazonului valorilor cheilor înregistrărilor, distribuirea valorilor acestor chei.
Drept diapazon se consideră diferenţa dintre valoarea maximală şi cea minimală a cheilor înregistrărilor ce aparţin
grupului sortat.
În interiorul diapazonului valorile cheilor înregistrărilor sortate pot fi diverse. De aceea nu e exclusă dublarea unei şi
aceiaşi valori a cheii ori absenţa unor valori.
Pentru caracterizarea procesului de sortare de asemenea e necesar de a cunoaşte coraportul dintre nr. de înregistrări
(N) şi lungimea diapazonului (D).
Dacă în cazul distribuirii uniforme a valorilor cheilor în fişierul sortat N>0, atunci aceasta ne dovedeşte că în fişierul
sortat sunt înregistrări cu unele şi aceleaşi valori a cheilor înregistrărilor. Dacă N<0, atunci în interiorul diapazonului nu
sunt utilizate toate valorile cheilor proprii pentru acest diapazon.
Grupul de înregistrării cu valorile cheilor repartizate într-o numită succesiune (crescândă, descrescândă) se numeşte
succesiune.
De ex.: grupul de înregistrări cu valorile cheilor 3, 9, 11, 7, 5, 8, 12 formează 3 succesiuni:
1) 3, 9, 11; D=3
2) 7; D=1
3) 5, 8, 12. D=3
Numărul de înregistrări ce se conţin în succesiune formează dimensiunea ori lungimea succesiunii.
În depindere de caracterul efectuării sortării procesul de realizare al ei se efectuează prin distribuire, selectarea,
ordonare, concatenare sau intersectare. Fiecare din aceste modalităţi se deosebeşte prin conceptul de organizare a însăşi
procesului de sortare a datelor iniţiale. Unele din ele ca regulă solicită efectuarea sortării în prealabil ori după realizarea
procesului de pregătire a înregistrărilor pentru a fi ordonate.
În final indiferent de modalitate, va fi obţinut un fişier rezultativ în care înregistrările vor fi ordonate după valorile
cheilor lor.

După cum s-a stabilit anterior aceste metode sunt realizate numai în cazul cînd volumul memoriei interne permite de
a repartiza pe deplin fişierul iniţial predestinat pentru a fi sortat. Însăşi sortarea solicită şi utilizarea altui dispozitiv al
calculatorului – procesorului. La nivel fizic sortarea se reduce schematic la următoarele:
1. Înainte de a fi sortat fişierul iniţial se transcrie pe deplin din memoria externă în cea internă.
2. Din memoria internă se transcriu în procesor valorile cheilor a două înregistrări ce se contrapun.
3. În depindere de rezultatul acestei contrapuneri, una din înregistrări va fi transcrisă din procesor în memoria internă.
4. Din nou se transcrie o altă înregistrare din memoria internă în procesor, cheia ei se compară cu cheia înregistrării ce
se găseşte în procesor. În dependenţă de rezultatul acestei comparări una din înregistrări se va transcrie din procesor
în memoria internă ş.a.m.d. până sortarea deplină a fişierului iniţial.
5. Fişierul sortat în continuare poate fi supus prelucrării de calcul ori scos la imprimantă (afişat la monitor), ori
înregistrat în memoria externă.
În dependenţă de solicitarea anumitei rezerve de spaţiu al memoriei interne se evidenţiază două grupe de metode de
sortare internă:
– metode ce nu solicită spaţiul de memorie suplimentar;
– metode ce solicită acest spaţiu;
De menţionat faptul că numărul metodelor de sortare este considerabil (câteva sute) însă printre metodele de sortare
internă ce nu necesită spaţiu suplimentar de memorie cele mai frecvent aplicate sunt următoarele trei:

A. Metoda de inserţie, constă în aceea că fiecare cheie se compară cu cheia vecină şi în dependenţă de
rezultatul acestei comparări înregistrările se schimbă sau nu cu locurile lor. Acest proces de realizare până la
obţinerea fişierului sortat. De regulă numărul paşilor de sortare se egalează cu numărul înregistrărilor în fişierul
sortat.

B. Metoda Shell se consideră cea mai eficientă deoarece în afară de aceea că nu solicită memorie
suplimentară contribuie la cea mai rapidă sortare a înregistrărilor. În principiu esenţa metodei constă în aceea că
fişierul iniţial se divizează în grupe de înregistrări cu unu şi acelaşi număr de înregistrări, după ce aceste
înregistrări se sortează prin metoda insertivă. Cu fiecare pas numărul grupelor de înregistrări sortate se reduce iar
lungimea lor se măreşte.

C. Metoda bulelor – este cea mai simplă, însă şi cea mai neeficientă, deoarece necesită multe etape şi
comparări. Esenţa ei se reduce la aceea că valorile cheilor la prima etapă se vor compara până atunci când pe
primul loc nu va fi scoasă înregistrarea cu cea mai mică valoare a cheii. În continuare acelaşi lucru se va produce
şi cu următoarea înregistrare şi aşa până nu va fi sortat şirul iniţial pe deplin.

În grupa de metode de sortare internă ce necesită memoriei suplimentară frecvent sunt aplicate următoarele două
metode:
D. Metoda sortării prin interclasare (contopire) constă în aceea că fişierul iniţial la primul pas se
divizează în subgrupe, fiecare din ele constând din două chei. Prin compararea valorilor ei ele se schimbă sau nu
cu locul. La pasul doi aceste subgrupe se unesc în alte subgrupe ce constau din 4 chei. De asemenea ele se
compară şi se schimbă cu locul. La pasul trei se formează subgrupa din 8 chei şi aşa mai departe până nu va fi
format tot fişierul sortat.
E. Metoda de sortare prin selecţia în carou. Spre deosebire de celelalte metode necesită utilizarea nu a
două ci a trei zone de sortare:
- spaţiul pentru fişierul iniţial
- domeniul pentru fişierul sortat
- domeniul pentru acumularea înregistrărilor sortate.

PROBLEMĂ – MODEL
Este dată următoare succesiune de valori a cheilor înregistrărilor (n = 9):
A=6, 8, 2, 4, 10, 25, 3, 5, 15}
E necesar de sortat această succesiune de valori a cheilor pin metodele:
a) Metoda de inserare;
b) Metoda Shell;
c) Metoda bulelor;
d) Medoda de interclasare;
e) Metoda de selecţie în carou.

REZOLVARE:
A. Metoda de inserare:
Succesiunea
nesortată 6 8 2 4 10 25 3 5 15

I 6 8 2 4 10 25 3 5 15

II 6 8 2 4 10 25 3 5 15

III 2 6 8 4 10 25 3 5 15

IV 2 4 6 8 10 25 3 5 15

V 2 4 6 8 10 25 3 5 15

VI 2 4 6 8 10 25 3 5 15

VII 2 3 4 6 8 10 25 5 15

VIII 2 3 4 5 6 8 10 25 15
Succesiunea
2 3 4 5 6 8 10 15 25 sortată

B. Metoda Shell:
Succesiunea
nesortată 6 8 2 4 10 25 3 5 15
Deoarece succesiunea este cu număr impar de elemente, aplicăm următoarea formulă de determinare a numărului de
grupe de elemente:
n 1 8
d1   4
2 2

I 6 8 2 4 10 25 3 5 15
I
II
III
IV

Grupa I (6, 10, 15)


Grupa II (8, 25)
Grupa III (2, 3)
Grupa IV (4, 5)
d1 4
d2   2
2 2
II 6 8 2 3 10 25 4 5 15
I
II

Grupa I (6, 2, 10, 4, 15) (2, 4, 6, 10, 15)


Grupa II (8, 3, 25, 5) (3, 5, 8, 25)
d2 2
d3   1
2 2
III 6 8 2 3 10 25 4 5 15
I
Grupa I (6, 8, 2, 3, 10, 25, 4, 5, 15) (2, 3, 4, 5, 6, 8, 10, 15, 25)
Succesiunea
2 3 4 5 6 8 10 15 25 sortată

C) Metoda bulelor:
Succesiunea
nesortată 6 8 2 4 10 25 3 5 15
I 2 8 6 4 10 25 3 5 15

II 2 6 8 4 10 25 3 5 15
2 4 8 6 10 25 3 5 15
2 3 8 6 10 25 3 5 15
III 2 3 6 8 10 25 4 5 15
2 3 4 8 10 25 6 5 15
IV 2 3 4 6 10 25 8 5 15
2 3 4 5 10 25 8 6 15
V 2 3 4 5 6 25 8 10 15
VI 2 3 4 5 6 8 25 10 15
VII 2 3 4 5 6 8 10 25 15
Succesiunea
VIII 2 3 4 5 6 8 10 15 25 sortată
D) Metoda de interclasare:
Pasul I Pasul II Pasul III Pasul IV
Succesiunea
nesortată 6 6
2
8 8
4 2 2
2 2 6 3 3
4 4 8 4 4
5 5
10 10
3 6 6
25 25
5 8 8
3 3 10 10 10
5 5 25 25 15
Succesiunea
25 sortată
15 15 15 15

E) Metoda de selecţie în carou:


I II III IV V VI VII VIII IX
6 2 6 6 – 6 – 6 – 6 – 8 – – –
8 8 8 8 8 8 – – –
2 – – – – – – – –
4 4 4 10 10 10 10 26 26

3 3 5 5 15 15 15 15
4 – – – – – – – –
10 10 10 10 – – – – –
26 26 26 26 26 26 26 26 –
3 – – – – – – – –
5 5 5 5 – – – – –
15 15 15 15 15 – – – –

Zona de acumulare: 2, 3, 4, 5, 6, 8, 10, 15, 26

SARCINĂ
Metode de sortare internă
Problema № 1
Este dată următoarea succesiune de elemente (n=20):
A=16, 18, 22, 14, 21, 36, 12, 15, 21, 12, 13, 18, 14, 23, 37, 54, 93, 26, 17, 25}
E necesar:
1. de sortat succesiunea dată de elemente în ordine crescîndă prin metodele:
a) insertivă,
b) Şell,
c) «bulelor»
d) interclasare
e) selecţie în carou;
2. de determinat numărul paşilor, valoarea pasului d sortare la fiecare etapă, de calculat numărul de comparări şi
schimbări la fiecare pas de sortare, precum şi numărul grupelor ordonate (sortate).
Rezultatele calculelor se înscriu în tabelul de următoarea formă:
Metoda de Numărul de Numărul de Numărul de Rezervă de
sortare etape de sortare comparări schimburi memorie
Insertivă
Şell
Bulelor
Interclasare
Selecţie în
carou
De determinat cea mai eficienta metodă în baza valorilor acestor parametri.

Problema № 2
Este dată următoarea succesiune de elemente (n=12):
A=25, 26, 23, 28, 31, 27, 29, 23, 25, 38, 45, 19}
E necesar:
De efectuat aceeaşi ce şi în problema 1.

Problema № 3
Este dată următoarea succesiune de elemente (n=11):
A=17, 7, 3, 8, 10, 21, 1, 23, 15, 4, 18}
E necesar:
De efectuat aceeaşi ce şi în problema 1.

Problema № 4
Este dată următoarea succesiune de elemente (n=14):
A=81, 1, 96, 44, 53, 34, 48, 56, 7, 83, 3, 15, 11, 90}
E necesar:
De efectuat aceeaşi ce şi în problema 1.

Problema № 5
Este dată următoarea succesiune de elemente (n=10):
A=41, 14, 4, 1, 83, 38, 8, 13, 95, 5}
E necesar:
De efectuat aceeaşi ce şi în problema 1.

Problema № 6
Este dată următoarea succesiune de elemente (n=17):
A=18, 3, 4, 19, 2, 10, 23, 32, 91, 17, 71, 76, 6, 18, 2, 19, 1}
E necesar:
De efectuat aceeaşi ce şi în problema 1.

Problema № 7
Este dată următoarea succesiune de elemente (n=13):
A=31, 28, 45, 57, 7, 83, 96, 11, 25, 6, 10, 26}
E necesar:
De efectuat aceeaşi ce şi în problema 1.

S-ar putea să vă placă și