Cod sursa(job #1019656)

Utilizator crosmanCrosman Vlad crosman Data 31 octombrie 2013 18:53:05
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>

void merge(int a[], int low, int mid, int high)
{
    int b[10000];
    int i = low, j = mid + 1, k = 0;

    while (i <= mid && j <= high) {
        if (a[i] <= a[j])
            b[k++] = a[i++];
        else
            b[k++] = a[j++];
    }
    while (i <= mid)
        b[k++] = a[i++];

    while (j <= high)
        b[k++] = a[j++];

    k--;
    while (k >= 0) {
        a[low + k] = b[k];
        k--;
    }
}

void mergesort(int a[], int low, int high)
{
    if (low < high) {
        int m = (high + low)/2;
        mergesort(a, low, m);
        mergesort(a, m + 1, high);
        merge(a, low, m, high);
    }
}
int main()
{
    int p[20],n,i;
    FILE *f=fopen("input.txt","r"),*g=fopen("output.txt","w");

    fscanf(f,"%d",&n);

    for (i=1;i<=n;i++)
        fscanf(f,"%d",&p[i]);

   mergesort(p,1,n);

//interclas(p,1,(n+1)/2,n);
    for (i=1;i<=n;i++)
        fprintf(g,"%d ",p[i]);

    return 0;
}