Cod sursa(job #1345724)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 17 februarie 2015 20:32:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>
using namespace std;
int n, i;
int v[500001], w[500001];
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare(int p, int mid, int u){
    int i = p, j = mid + 1, k = 0;
    while(i <= mid && j <= u){
        if(v[i] < v[j]){
            k++;
            w[p+k-1] = v[i];
            i++;
        }
        else{
            k++;
            w[p+k-1] = v[j];
            j++;
        }
    }
    for(; i <= mid; i++){
        k++;
        w[p+k-1] = v[i];
    }
    for(; j <= u; j++){
        k++;
        w[p+k-1] = v[j];
    }
    for(i = p; i <= u; i++){
        v[i] = w[i];
    }
}
void sortare(int p, int u){
    if(p != u){
        int mid = (p + u) / 2;
        sortare(p, mid);
        sortare(mid + 1, u);
        interclasare(p, mid, u);
    }
}
int main(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin>> v[i];
    }
    sortare(1, n);
    for(i = 1; i <= n; i++){
        fout<< v[i] <<" ";
    }
    return 0;
}