Sunteți pe pagina 1din 14

Algoritmul De Interclasare

Este un algoritm simplu, menit a transforma


doua secvente ordonate intr-una singura, tot
ordonata , care contine toate elementele
celor doua secvente de pornire
Algoritmul joaca un rol extrem de important
in sortarea fisierelor secventiale. Toti
algoritmii de sortare de fisiere se bazeaza pe
ideea urmatoare:
 daca un fisier este impartit in 2 jumatati si acestea
sunt sortate separat, pentru a sorta intregul fisier
este suficient sa interclasam cele 2 jumatati

Calin Jebelean Algoritmul De Interclasare 1


Algoritmul De Interclasare
Presupunem ca dorim sa interclasam secventele A si
B (ordonate crescator) si sa obtinem secventa
rezultat C (ordonata tot crescator)

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36

C:

Calin Jebelean Algoritmul De Interclasare 2


Algoritmul De Interclasare
Algoritmul este extrem de simplu si intuitiv
Imaginam cate o sageata (pointer, cursor) catre primul element
al fiecarei secvente
La fiecare pas se compara cele 2 elemente spre care indica
sagetile
Minimul dintre cele 2 elemente este copiat in secventa rezultat
si sageata corespunzatoare este mutata o pozitie spre dreapta
(cealalta sageata ramane nemiscata)
Daca vreuna dintre sageti depaseste limita dreapta a secventei
asociate, se copiaza elementele ramase in cealalta secventa in
secventa rezultat
Algoritmul se incheie in momentul in care ambele sageti au
depasit limita dreapta a secventelor asociate

Calin Jebelean Algoritmul De Interclasare 3


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 4 < 6, trece 4

C: 4

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 5 < 6, trece 5

C: 4 5

Calin Jebelean Algoritmul De Interclasare 4


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 6 < 7, trece 6

C: 4 5 6

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 7 < 8, trece 7

C: 4 5 6 7

Calin Jebelean Algoritmul De Interclasare 5


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 8 < 10, trece 8

C: 4 5 6 7 8

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 9 < 10, trece 9

C: 4 5 6 7 8 9

Calin Jebelean Algoritmul De Interclasare 6


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 10 < 12, trece 10

C: 4 5 6 7 8 9 10

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 11 < 12, trece 11

C: 4 5 6 7 8 9 10 11

Calin Jebelean Algoritmul De Interclasare 7


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 12 < 14, trece 12

C: 4 5 6 7 8 9 10 11 12

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 14 < 16, trece 14

C: 4 5 6 7 8 9 10 11 12 14

Calin Jebelean Algoritmul De Interclasare 8


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 16 < 19, trece 16

C: 4 5 6 7 8 9 10 11 12 14 16

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 19 < 28, trece 19

C: 4 5 6 7 8 9 10 11 12 14 16 19

Calin Jebelean Algoritmul De Interclasare 9


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 24 < 28, trece 24

C: 4 5 6 7 8 9 10 11 12 14 16 19 24

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 28 < 36, trece 28

C: 4 5 6 7 8 9 10 11 12 14 16 19 24 28

Calin Jebelean Algoritmul De Interclasare 10


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 31 < 36, trece 31

C: 4 5 6 7 8 9 10 11 12 14 16 19 24 28 31

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 32 < 36, trece 32

C: 4 5 6 7 8 9 10 11 12 14 16 19 24 28 31 32

Calin Jebelean Algoritmul De Interclasare 11


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 35 < 36, trece 35

C: 4 5 6 7 8 9 10 11 12 14 16 19 24 28 31 32 35

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36 trece 36

C: 4 5 6 7 8 9 10 11 12 14 16 19 24 28 31 32 35 36

Calin Jebelean Algoritmul De Interclasare 12


Algoritmul De Interclasare

A: 6 8 9 12 16 28 31 32 35

B: 4 5 7 10 11 14 19 24 36

C: 4 5 6 7 8 9 10 11 12 14 16 19 24 28 31 32 35 36

Ambele sageti au depasit limita dreapta a secventelor asociate,


deci algoritmul se opreste aici
Mecanismul sagetilor poate fi implementat explicit, cu ajutorul
unor variabile intregi care memoreaza indicii la care s-a ajuns in
cadrul fiecarei secvente (daca este vorba despre tablouri), sau
implicit, cu ajutorul pointerilor de fisier – file pointers (daca este
vorba despre fisiere, sfarsitul secventelor testandu-se in acest
caz cu ajutorul functiilor de tipul feof din limbajul C)

Calin Jebelean Algoritmul De Interclasare 13


Algoritmul De Interclasare
Algoritmul este foarte rapid, complexitatea sa fiind
proportionala cu suma lungimilor celor 2 secvente
Se observa ca nu este necesar accesul aleator in
cadrul secventelor, ci doar accesul secvential –
secventele fiind parcurse de la inceput la sfarsit, fara
reveniri
Aceasta caracteristica (care nu se regaseste, de
exemplu, la algoritmi de sortare specifici tablourilor),
face ca acest algoritm sa se preteze, in special, la
sortarea fisierelor secventiale

Calin Jebelean Algoritmul De Interclasare 14

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