Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //duży plik = taśma do której miała ilość większa liczba fib. serii; mały plik = taśma z mniejszą liczbą fib (ofc duży plik może być mniejszy od małego, np. 6 i 8 serii, ale tam gdzie 6 teoretycznie jest 13)
- //pamiętamy małą i dużą liczbe fib (to są kolejne liczby fib i reprezentują teoretyczną ilość serii w taśmach małej i dużej)
- while(mała liczba fib > 0){
- czytaj porcje z dużego i małego pliku;
- jeśli bufory nie zostały wypełnione całkowicie, to trzeba ustawić flagę, że koniec taśmy i w którym miejscu w buforze się kończy;
- for(kolejne rekordy aż do osiągnięcia mniejszej liczby fib (np. 8, gdy jest łącznie 14-21 serii do posortowania)){
- while(nie koniec serii wpisywanej do taśmy - celu){
- if(osiągneliśmy już koniec dużego pliku || poprzednia wartość dużego > sprawdzana wartość dużego){
- if(osiągneliśmy już koniec małego pliku || poprzednia wartość małego > sprawdzana wartość małego){
- koniecSerii=true;
- zerowanie poprzednich wartości (ja ustawiam na -1, bo ujemne nie mogą wystąpić, więc napewno będą mniejsze od sprawdzanych)
- }else{
- źródłem wartości do wrzucenia do taśmy - celu jest mała tasma.
- zapisujemy że poprzednia wartość małego jest sprawdzaną wartością
- }
- }else if(osiągneliśmy już koniec małego pliku || poprzednia wartość małego > sprawdzana wartość małego){
- źródłem wartości do wrzucenia do taśmy - celu jest duża tasma.
- zapisujemy że poprzednia wartość dużego jest sprawdzaną wartością
- }else{
- jeśli sprawdzana wartość małego jest mniejsza to mały jest źródłem, else duży
- zapisujemy poprzednią wartość małego, lub dużego jako aktualnie wybraną
- }
- if(!koniecSerii){
- przypisujemy wybraną wartość taśmy - źródła (mała/duża) do taśmy - celu
- if(osiągneliśmy koniec bufora tasmy źródła){
- wczytujemy nową porcje i sprawdzamy jak wyżej, czy tasma się nie skończyła
- }
- if(bufor celu się skończył){
- zapisujemy bufor do tasmy celu
- ZAPAMIĘTUJEMY OSTATNIĄ WARTOŚĆ
- ZAZNACZAMY ŻE TRZEBA BĘDZIE JĄ PORÓWNAĆ Z WYBIERANĄ
- }
- }
- }
- zerowanie poprzednich wartości małego i dużego, koniecSerii=false;
- }
- jeśli w buforze celu coś zostało to trzeba tą część (nie całość) zapisać do taśmy celu
- zerowanie syfu
- //KONIEC 1 kroku
- taśma celu staje się taśmą dużą
- taśma duża staje się taśmą małą //nie zerujemy miejsca od którego będziemy w niej czytać, czytamy po prostu dalej, bo nie usuwamy już zmerdżowanych serii, tylko omijamy je czytając z pliku.
- taśma mała staje się taśmą celem
- cofamy liczby fib o krok
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement