Pagini recente » Cod sursa (job #908743) | Cod sursa (job #2717440) | Cod sursa (job #1294219) | Cod sursa (job #1174869) | Cod sursa (job #2898339)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int a[500001], n, aux[500001];
void interclasare(int st, int m, int dr)
{
int i = st, j = m+1, k = st;
while(i <= m && j <= dr) {
if(a[i] < a[j]){
aux[k] = a[i];
i++; k++;
}
else{
aux[k] = a[j];
j++; k++;
}
}
while(i <= m){
aux[k] = a[i];
i++; k++;
}
while(j <= dr){
aux[k] = a[j];
j++; k++;
}
for(i = st; i <= dr; i++)
a[i] = aux[i];
}
void MergeSort(int st, int dr) {
if(st < dr) {
int m = (st + dr) / 2;
MergeSort(st,m);
MergeSort(m + 1,dr);
interclasare(st, m, dr);
}
}
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
MergeSort(1,n);
for(int i = 1; i <= n; i++)
fout << a[i] << ' ';
return 0;
}