Rekurencja na plikach - mergsort z wykorzystaniem plików [C++]

0

Witajcie, mam kłopot z takim oto algorytmem:

Napisałem algorytm do mergsort-a z wykorzystaniem tablicy i rekurencji:

#include <cstdlib>
#include <iostream>
#include <windows.h>
#define ILE 20
 
using namespace std;

int T3[ILE] = {10,20,5,1,23,6,35,4,1,2,8,9,7,4,6,98,7,5,6,21};
int TP[ILE]; // tablica pomocnicza

void lacz(int pocz,int sr, int kon)
{
 int p,s,r; // zmienne do okreslania zakresu tablicy jak i srodka 
 p=pocz;
 for (p; p<=kon;p++) 
  TP[p]=T3[p]; // przeniesienie z tablicy głónej - T3 do tablicy pomocniczej TP
  p=pocz; // pozycja wskaznikow tablic
  r=pocz;
  s=sr+1;
  while (p<=sr && s<=kon) // przeniesienie danych z sortowaniem z TP do T3
  {
   if (TP[p]<TP[s])
   T3[r++]=TP[p++];
   else
   T3[r++]=TP[s++];
  }
  while (p<=sr)     // Przeniesienie nieskopiowanych danych ze zbioru pierwszego w przypadku, gdy drugi zbiór się skończył
  T3[r++]=TP[p++];
}

void merge_sort(int pocz, int kon)
{
 if (pocz<kon)
 {
  int sr=(pocz+kon)/2;
  merge_sort(pocz,sr); // dzileiny tablice od pocz do sr
  merge_sort(sr+1,kon); // dzielimy tablice od sr+1 do konca
  lacz(pocz,sr,kon);
 }
}

int main()
{
int i; 
printf("Zbior przed sortowaniem:\n");
for (i=0; i<ILE; i++)
printf("%d ", T3[i]);
merge_sort(0,ILE-1);
 
printf("\nZbior po sortowaniu:\n");
for (i=0; i<ILE; i++)
printf("%d ", T3[i]);

system("PAUSE");
}



 

Chciałbym zamienić go na wykorzystanie plików - aby mergesort działał na plikach.

Na razie mam jedynie przeniesienie liczb z pliku liczby.txt do tablicy T3, chciałbym wiedzieć jak zamienić

void lacz i void merge_sort aby działał na plikach :

aby dzielił do plików i z plików pobierał dane jak i je scalał.

z góry dziękuję za pomoc :)

0

Zwykłe liczby po spacji np. 20 znaków 10 20 5 1 23 6 35 4 1 2 8 9 7 4 6 98 7 5 6 21

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