Pagini recente » Cod sursa (job #2290593) | Cod sursa (job #1259523) | Cod sursa (job #2258724) | Cod sursa (job #2960681) | Cod sursa (job #2901371)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
const int MAX = 500001;
int v[MAX],v1[MAX];
/*void Merge(int v[], int st, int mij, int dr) {
int n1 = mij - st + 1;
int n2 = dr - mij;
int v1[n1], v2[n2];
for (int i = 0; i < n1; i++)
v1[i] = v[st + i];
for (int j = 0; j < n2; j++)
v2[j] = v[mij + 1 + j];
// facem interclasare
int i, j, k;
i = 0;
j = 0;
k = st;
while (i < n1 && j < n2) {
if (v1[i] <= v2[j]) {
v[k] = v1[i];
i++;
} else {
v[k] = v2[j];
j++;
}
k++;
}
while (i < n1) {
v[k] = v1[i];
i++;
k++;
}
while (j < n2) {
v[k] = v2[j];
j++;
k++;
}
}*/
void mergeSort(int v[], int st, int dr) {
if (st < dr) {
int mij = (st +dr) / 2;
mergeSort(v, st, mij);
mergeSort(v, mij + 1, dr);
int i = st, j = mij + 1, k = st;
while(i <= mij || j <= dr)
{
if(j > dr || (i <= mij && v[i] < v[j]))
v1[k++] = v[i++];
else
v1[k++] = v[j++];
}
for(i = st; i <= dr; i++)
v[i] = v1[i];
}
}
void printvect(int v[], int N) {
for (int i = 1; i <= N; i++)
fout << v[i] << " ";
}
int main()
{
int N;
fin >> N;
for (int i = 1; i <= N; i++)
fin >> v[i];
mergeSort(v,1,N);
printvect(v, N);
return 0;
}