Zaimplementuj algorytm sortowania przez scalanie (wersja algorytmu prezentowana na wykładzie) z użyciem
plików tekstowych, w pliku wejściowym (do posortowania) każda liczba znajduje się w osobnym wierszu.
Może być takie rozwiązanie tego zadania? No nie wiem do końca jak to zrobić żeby wszytko poprawnie działało bo wypisuje to z pliku a nie chce mi sortować
a w pilku to napisałem tak
1
2
3
4
5
6
7
#include<iostream>
#include<cstdlib>
#include<fstream>
using namespace std;
int main()
{
string linia;
fstream plik;
plik.open("dane.txt", ios::in);
if(plik.good() == true)
{
while(!plik.eof())
{
getline(plik, linia);
cout << linia << endl;
}
}
void scal(int linia[], int lewy, int srodek, int prawy)
{
int i = lewy, j = srodek + 1;
for(int i = lewy;i<=prawy; i++)
pom[i] = linia[i];
for(int k=lewy;k<=prawy;k++)
if(i<=srodek)
if(j <= prawy)
if(pom[j]<pom[i])
linia[k] = pom[j++];
else
linia[k] = pom[i++];
else
linia[k] = pom[i++];
else
linia[k] = pom[j++];
}
void sortscalanie(int linia[],int lewy, int prawy)
{
if(prawy<=lewy) return;
int srodek = (prawy+lewy)/2;
sortscalanie(linia, lewy, srodek);
sortscalanie(linia srodek+1, prawy);
scal(linia, lewy, srodek, prawy);
}
int n;
for(int i=0;i<n;i++)
cin>>linia[i];
sortscalanie(linia,0,n-1);
for(int i=0;i<n;i++)
cout<<linia[i]<<" ";
return 0;
}