Sortowanie pliku

0

Witam, mam problem zwiazany z posortownaiem pliku w pascalu. Plik jest textowy w kazdym wierszu jest jakas liczba naturalna i nie wiem ile jest liczb jest w pliku (ilosc liczb moze sie zmieniac)
Wiem ze mam wykozystac algorytm sortowania MERGE ale nie wiem jak to zrobic probowalem juz chyba na wszystkie sposoby.
Szukalem na necie gotowych algorytmow (procedur sortowania pliku merge) lecz bez skutecznie.
A no i problem nastepny nie moge tu wykorzystac tablic ze wzgledu na stala ktora musze podac do wielkosci tablicy

Jesli ktos juz sie styknol z takim problemem prosze o pomoc lub jak ktos widzial gdzies taka procedure prosze o jaiegos linka

z gory dzieki

0

Pomyśl o tablicach dynamicznych ;) Ew. wczytaj plik do struktury dynamicznej (lista jednokierunkowa), posortuj listę i z powrotem zapisz do pliku.

0

ja mam przy okazji pytanie - jaki jest ogólny zarys sortowania pliku większego niż ma się dostępnej pamięci ?

0

Czysto teoretyzując widzę w sposoby (zakładam że nie wykorzystujemy windowsa i jego automatycznego stronnicowania) ale robimy to ręcznei zakłądając sztywno wielkość możliwej do użycia pamięci:

  1. Sortujemy kawałkami potem np bąbelkowe - strasznie czasochłonne i mnóstwo operacji z wybieraniem fragmentów do sortowania - koszmar - zdecydowanie odpada
  2. Zabawa z plikami np. ini. tworzymy podgrupy na podstawie pierwszych kilku znaków (np 1 [A],2[AB],5 [ABCDE] itp) potem segregujemy podgrupy (tak należy dobrac wstępne sortowanie aby podgrupy meiściły siew pamięci) na koneic łączymy podgrupy wg. kolejności - czasochłonne podczas działania
  3. Struktura dynamiczna drzewa (trzeba by się zastanowić jakiego i jak dokładnie struktura) z zapisem - najlepiej w oparciu o pliki ini. Wówczas wczytywanei i wkładanie odbywałoby się zgodnie z procedurą a poszczególne części drzewa nie musiałyby być trzymane w pamięci, wystaczyłoby odpowiedni kawałek drzwa i/lub doczytywać z plików dalsze potzrebne części drzewa

Jak już mówiłem czysto teoretyzując
Andrzej Dąbrowski

1 użytkowników online, w tym zalogowanych: 0, gości: 1