Pagini recente » Cod sursa (job #2834401) | Cod sursa (job #715281) | Cod sursa (job #1399353) | Cod sursa (job #2726767) | Cod sursa (job #3139867)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
const int NMAX = 5 * (1e5) + 5;
int v[NMAX + 5];
void interclasare(int left, int right, int mid)
{
int i = left, j = mid + 1;
vector <int> vec;
vec.clear();
while(i <= mid and j <= right)
if(v[i] <= v[j])
vec.push_back(v[i++]);
else
vec.push_back(v[j++]);
while(i <= mid)
vec.push_back(v[i++]);
while(j <= right)
vec.push_back(v[j++]);
for(int i = left; i <= right; i++)
v[i] = vec[i - left];
}
void MergeSort(int left, int right)
{
if(left < right)
{
int mid = (left + right) / 2;
MergeSort(left, mid);
MergeSort(mid + 1, right);
interclasare(left, right, mid);
}
}
int main()
{
int n;
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
MergeSort(1, n);
for(int i = 1; i <= n; i++)
fout << v[i] << ' ';
fin.close();
fout.close();
return 0;
}