Sunteți pe pagina 1din 1

Cea mai buna metoda de sortare a fisierelor secventiale pe disc

Consideram ca avem un fisier organizat secvential foarte mare ce trebuie sortat. Datele
din acest fisier nu pot fi incarcate in memoria interna (RAM) din cauza dimensiunilor, iar din acest
motiv nu se poate aplica o metoda cunoscuta de sortare interna.
Trebuie, asadar, sa ne orientam spre o metoda de sortare externa. Sortarea externa
reprezinta o clasa de algoritmi de sortare care se ocupa de volume mari de date.
Cel mai eficient algoritm pentru a sorta un asemenea fisier este un algoritm de sortare
prin interclasare (merge sort) hibrid.
In faza de sortare, se citesc din fisier un numar de articole care este destul de mic incat sa
incapa in memoria interna. Vectorul de articole astfel obtinut se sorteaza printr-o metoda
cunoscuta, spre exemplu quick sort, folosing cheia de sortare data. Quick sort este cunoscuta ca
fiind una din cele mai eficiente metode de sortare, cu complexitatea O(n*logn). Masivul sortat
este apoi scris intr-un fisier temporar.
Se repeta citirea din fisierul ce trebuie sortat, sortarea prin quick sort si apoi scrierea
vectorilor de articole sortati in fisiere temporare, pana cand ajungem la sfarsitul fisierului.
Pentru a obtine sortarea completa a fisierului initial, vom folosi functia de
interclasare(merge) a metodei de sortare merge sort.
Avem fisierele temporare sortate in memorie. Se citeste cate un articol din fiecare fisier
intr-un vector alocat dinamic. Cel mai mic(dupa cheia de sortare) articol din acest vector este
scris in fisierul de iesire si in locul lui este citit un nou articol din fisierul corespunzator. Procesul
se repeta pana cand nu mai exista niciun articol in niciun fisier.
Aceasta metoda asigura sortarea eficienta a unui fisier de mari dimensiuni ce nu poate fi
citit in intregime in memoria interna. Astfel, algoritmul prezentat este denumit sortare externa,
deoarece nu memoreaza intern datele ce trebuie sortate dupa o cheie de sortare data.

Arhip Georgiana
1003

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