Cod sursa(job #1023364)

Utilizator medeea0507Medeea Lazea medeea0507 Data 6 noiembrie 2013 20:50:31
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

void interclasare(int i,int m,int j,int v[])
{
    int x[100],q=0,aux=m+1;
    while (i<=m && aux<=j)
        if (v[i]<v[aux])
           x[++q]=v[i++];
        else
            x[++q]=v[aux++];
    while(i<=m)
        x[++q]=v[i++];
    while (aux<=j)
        x[++q]=v[aux++];
    while (q)
    {
        v[j]=x[q];
        j--;
        q--;
    }
}

void sortare(int i,int j,int v[])
{
    if (v[i]>v[j])
        swap(v[i],v[j]);
}

void di(int i,int j,int v[])
{
    if (j-i<2)
      sortare(i,j,v);
    else
    {
        di(i,(i+j)/2,v);
        di((i+j)/2+1,j,v);

    interclasare(i,(i+j)/2,j,v);
    }
}

int main()
{
    int v[100],i,n;
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    di(1,n,v);
    for (i=1;i<=n;i++)
        fout<<v[i]<<" ";
    return 0;
}