Pagini recente » Rating lol lol (lol1) | Cod sursa (job #1578963) | Cod sursa (job #2188150) | Cod sursa (job #2800893) | Cod sursa (job #1786073)
//MergeSort
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
#define DMAX 500000
unsigned N;
unsigned v[DMAX+5], i;
unsigned aux[DMAX+5], j;
unsigned k, l;
void Interclasare(unsigned p, unsigned m, unsigned q) {
i = p;
j = m+1;
k = 1;
while(i <= m && j <= q) {
if(v[i] < v[j])
aux[k++] = v[i++];
else
aux[k++] = v[j++];
}
while(i <= m) aux[k++] = v[i++];
while(j <= q) aux[k++] = v[j++];
l = p;
for(k = 1 ; k <= (q-p)+1 ; k++)
v[l++] = aux[k];
}
void MergeSort(unsigned p, unsigned q) {
if(p < q) {
unsigned m = (p+q)/2;
MergeSort(p, m);
MergeSort(m+1, q);
Interclasare(p, m, q);
}
}
int main()
{
fin>>N;
for(i = 1 ; i <= N ; i++)
fin>>v[i];
MergeSort(1, N);
for(i = 1 ; i <= N ; i++)
fout<<v[i]<<' ';
fin.close();
fout.close();
return 0;
}