Pagini recente » Cod sursa (job #1866600) | Cod sursa (job #1050190) | Cod sursa (job #1487501) | Cod sursa (job #2825207) | Cod sursa (job #2151827)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void merge(vector<int>& v,int inf, int sup)
{
int k = 0;
int i = inf;
int mid = (inf + sup) / 2;
int j = mid + 1;
int temp[100];
while(i <= mid && j <= sup)
{
if(v[i] > v[j])
{
temp[k++] = v[j++];
}
else
temp[k++] = v[i++];
}
while(i <= mid)
{
temp[k++] = v[i++];
}
while(j <= sup)
{
temp[k++] = v[j++];
}
k = 0;
for(int i = inf; i <= sup; i++)
{
v[i] = temp[k++];
}
}
void mergeSort(vector<int>& v, int inf, int sup)
{
if(inf == sup)
return;
int mid = (inf + sup) / 2;
mergeSort(v, mid+1, sup);
mergeSort(v, inf, mid);
merge(v,inf,sup);
}
int main()
{
int dim;
vector<int> v;
in >> dim;
int x;
for(int i = 0; i < dim; i++)
{
in >> x;
v.push_back(x);
}
mergeSort(v,0,dim-1);
for (int i : v)
out << i <<' ';
return 0;
}