Pagini recente » Cod sursa (job #1206347) | Cod sursa (job #2317617) | Cod sursa (job #21093) | Cod sursa (job #844995) | Cod sursa (job #1238717)
// Include
#include <fstream>
#include <algorithm>
using namespace std;
// Constante
const int sz = 500001;
// Functii
void mergeSort(int left, int right);
// Variabile
ifstream in("algsort.in");
ofstream out("algsort.out");
int num;
int values[sz];
int temp[sz];
int main()
{
in >> num;
for(int i=1 ; i<=num ; ++i)
in >> values[i];
mergeSort(1, num);
for(int i=1 ; i<=num ; ++i)
out << values[i] << ' ';
out << '\n';
in.close();
out.close();
return 0;
}
void mergeSort(int left, int right)
{
if(left == right)
return;
int mid = (left+right) / 2;
mergeSort(left, mid);
mergeSort(mid+1, right);
int left1 = left, right1 = mid;
int left2 = mid+1, right2 = right;
int current = left-1;
while(left1 <= right1 && left2 <= right2)
{
if(values[left1] < values[left2])
temp[++current] = values[left1++];
else
temp[++current] = values[left2++];
}
while(left1 <= right1)
temp[++current] = values[left1++];
while(left2 <= right2)
temp[++current] = values[left2++];
for(int i=left ; i<=right ; ++i)
values[i] = temp[i];
}