Kod: Zaznacz cały
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
using namespace std;
const int N = 20; // Liczebność zbioru.
int d[N],p[N];
// Procedura sortująca
//--------------------
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];
}
// Program główny
//---------------
int main()
{
int i;
cout << " Sortowanie przez scalanie
"
"---------------------------
"
" (C)2005 Jerzy Walaszek
"
"Przed sortowaniem:
";
// Najpierw wypełniamy tablicę d[] liczbami pseudolosowymi
// a następnie wyświetlamy jej zawartość
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;
// Sortujemy
MergeSort(0,N-1);
// Wyświetlamy wynik sortowania
cout << "Po sortowaniu:
";
for(i = 0; i < N; i++) cout << setw(4) << d[i];
cout << endl;
return 0;
}