Pagini recente » Cod sursa (job #614109) | Cod sursa (job #2343488) | Cod sursa (job #327368) | Cod sursa (job #2266961) | Cod sursa (job #1092897)
// Include
#include <fstream>
#include <cstring>
using namespace std;
// Constante
const int sz = (int)5e5+1;
// Functii
void mergeSort(int left, int right);
// Variabile
ifstream in("algsort.in");
ofstream out("algsort.out");
int num;
int values[sz], temp[sz];
// Main
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] << ' ';
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;
int right1 = mid;
int left2 = mid+1;
int right2 = right;
int pos = left-1;
while(left1 <= right1 && left2 <= right2)
{
if(values[left1] <= values[left2])
temp[++pos] = values[left1++];
else
temp[++pos] = values[left2++];
}
while(left1 <= right1)
temp[++pos] = values[left1++];
while(left2 <= right2)
temp[++pos] = values[left2++];
for(int i=left ; i<=right ; ++i)
values[i] = temp[i];
}