Pagini recente » Cod sursa (job #2433685) | Cod sursa (job #2150947) | Istoria paginii runda/amberheard | Cod sursa (job #2046380) | Cod sursa (job #2753637)
#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
#include <iomanip>
#include <array>
#include <fstream>
#include <set>
//#include "utilFunc.h"
using namespace std;
void citire(int& n, int v[100]) {
ifstream fin("halfsort1.in");
fin >> n;
for (int i = 0; i < n; i++) {
fin >> v[i];
}
}
void afisare(int n, int v[100]) {
ofstream fout("halfsort1.out");
for (int i = 0; i < n; i++) {
fout << v[i] << " ";
}
}
void merge(vector<int64_t> &v, int low, int high, int mid)
{
int i, j, k;
vector<int64_t> c;
i = low;
k = low;
j = mid + 1;
while (i <= mid && j <= high)
{
if (v[i] < v[j])
{
c.push_back(v[i]);
k++;
i++;
}
else
{
c.push_back(v[j]);
k++;
j++;
}
}
while (i <= mid)
{
c.push_back(v[i]);
k++;
i++;
}
while (j <= high)
{
c.push_back(v[j]);
k++;
j++;
}
for (i = low; i < k; i++)
{
v[i] = c[i-low];
}
}
void mergeSort(vector<int64_t> &v, int low, int high) {
if (low < high) {
int mid;
mid = (low + high) / 2;
mergeSort(v, low, mid);
mergeSort(v, low + 1, high);
merge(v, low, high, mid);
}
return;
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
/*int64_t n, low, mid, high;
vector<int64_t> v;
v.resize(n);
for (auto& el : v) {
cin >> el;
}*/
vector<int64_t> v;
int64_t n;
fin >> n;
v.resize(n);
for (int i = 0; i < n; i++) {
fin >> v[i];
}
int low = 0;
int high = v.size() - 1;
mergeSort(v, low, high);
for (int i = 0; i < v.size(); i++)
fout << v[i] << " ";
}