Pagini recente » Cod sursa (job #1598660) | Cod sursa (job #1152105) | Cod sursa (job #2280172) | Cod sursa (job #1072481) | Cod sursa (job #3221363)
#include <iostream>
#include <fstream>
#include <stdint.h>
const int32_t MAX_N = 500000;
int32_t n;
int32_t vec[MAX_N], temp[MAX_N];
void Sort(int32_t start, int32_t end) {
if(start == end || start == end - 1)
return;
int32_t mid = (start + end) >> 1;
Sort(start, mid);
Sort(mid, end);
for(int32_t i = start; i != end; ++i)
temp[i] = vec[i];
int32_t ind1 = start, ind2 = mid, ind = start;
while(ind1 != mid && ind2 != end) {
if(temp[ind1] < temp[ind2]) {
vec[ind++] = temp[ind1++];
} else {
vec[ind++] = temp[ind2++];
}
}
while(ind1 != mid)
vec[ind++] = temp[ind1++];
while(ind2 != end)
vec[ind++] = temp[ind2++];
}
int main() {
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
fin >> n;
for(int32_t i = 0; i != n; ++i)
fin >> vec[i];
Sort(0, n);
for(int32_t i = 0; i != n; ++i)
fout << vec[i] << ' ';
fin.close();
fout.close();
return 0;
}