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 :)