Pagini recente » Cod sursa (job #1443263) | Cod sursa (job #2777368) | Cod sursa (job #574167) | Cod sursa (job #2739831) | Cod sursa (job #317022)
Cod sursa(job #317022)
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int *A;
void msort(int A[], int n) {
if (n <= 1) return;
int *B, *C;
B = new int[n/2];
C = new int[n - n/2];
memcpy(B, A, sizeof(int) * (n/2));
memcpy(C, A + n / 2, sizeof(int) * (n - n/2));
msort(B, n/2);
msort(C, n - n/2);
int i = 0, j = 0, k = 0;
while (i < n / 2 || j < n - n/2) {
if (i == n/2) {A[k++] = C[j++];continue;}
if (j == n - n/2) {A[k++] = B[i++]; continue;}
if (B[i] < C[j]) {A[k++] = B[i++]; continue;}
A[k++] = C[j++];
}
delete[] B;
delete[] C;
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
A = new int[n];
for (int i = 0; i < n; ++i) fin >> A[i];
msort(A, n);
for (int i = 0; i < n; ++i) {
if (i) fout << " ";
fout << A[i];
}
delete[] A;
return 0;
}