algorytm sortowania przez scalanie podpowie ktoś jak zrobić ?

0

Zaimplementuj algorytm sortowania przez scalanie z użyciem plików tekstowych, w pliku wejściowym (do posortowania) każda liczba znajduje się w osobnym wierszu.

Rozwiązanie powinno mieć stałą złożoność pamięciową (pobierać z plików tylko małą liczbę wartości).
znalazłam w internecie taki przykład ale jak zrobić te sortowanie z użyciem plików tekstowych

using namespace std;

const int N = 20;

int d[N],p[N];


void MergeSort(int i_p, int i_k)
{
  int i_s,i1,i2,i;

  i_s = (i_p + i_k + 1) / 2;
  if(i_s - i_p > 1) MergeSort(i_p, i_s - 1);
  if(i_k - i_s > 0) MergeSort(i_s, i_k);
  i1 = i_p; i2 = i_s;
  for(i = i_p; i <= i_k; i++)
    p[i] = ((i1 == i_s) || ((i2 <= i_k) && (d[i1] > d[i2]))) ? d[i2++] : d[i1++];
  for(i = i_p; i <= i_k; i++) d[i] = p[i];
}



int main()
{
  int i;


  srand((unsigned)time(NULL));

  for(i = 0; i < N; i++) d[i] = rand() % 100;
  for(i = 0; i < N; i++) cout << setw(4) << d[i];
  cout << endl;



  MergeSort(0,N-1);


  cout << "Po sortowaniu:\n\n";
  for(i = 0; i < N; i++) cout << setw(4) << d[i];
  cout << endl;
  return 0;
}
0

Nie wiem dlaczego wrzucasz fragment z internetu, z którym to fragmentem nie zrobiłaś nic i który to fragment zawiera takie coś:

  i1 = i_p; i2 = i_s;
  for(i = i_p; i <= i_k; i++)
    p[i] = ((i1 == i_s) || ((i2 <= i_k) && (d[i1] > d[i2]))) ? d[i2++] : d[i1++];
  for(i = i_p; i <= i_k; i++) d[i] = p[i];

Jeśli już nie chcesz sobie ułatwiać, to przynajmniej nie utrudniaj nam ;)

Co do Twojego problemu: Nie rozumiem co chcesz sortować? Gdzie wczytywanie pliku? Jaka ma być struktura pliku? Jakie dane?

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