Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Phase I. (Creating runs)
- 1. Read first nb records of the file into the buffers and sort them using an
- efficient in-memory algorithm (QuickSort, HeapSort, …), creating a run of
- length nb.
- 2. Write the run to a disk file.
- 3. Repeat steps 1 and 2 until you reach the end of file.
- Phase II. (Merging)
- 4. Merge first n-1 runs into longer runs (using one buffer for merging and
- writing) and write them to the disk.
- 5. Repeat step 4 for the next runs of the file.
- 6. Repeat steps 4 and 5 until one run is obtained.
- Jak mam użyć jednego bufora do czytania/pisania?
- Czy tutaj całość odbywa się na dwóch plikach?
- Załóżmy, że robię tak:
- faza 1
- while(plik1 niepusty)
- {
- Biorę sobię dużo rekordów z pliku 1, sortuję, zapisuje do pliku 2.
- }
- no i wtedy mam w pliku 2 (ilość rekordów/dużo) serii.
- faza 2
- while(plik2 niepusty)
- {
- znam dlugosc serii, więc merge dwoch serii z pliku2 ze sobą
- to do pliku1
- wtedy ilosc serii = ilość rekordów/(dużo*2)
- }
- i powtarzam faze 2, tyle ze z wieksza dlugoscia serii?
- ale że jak?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement