Cod sursa(job #1464778)

Utilizator AkerToropu Alexandru Aker Data 24 iulie 2015 17:32:35
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void swap(int *a, int i, int j)
{
    int aux = a[i];
    a[i] = a[j];
    a[j] = aux;
}


int partition(int *a, int left, int right)
{
    int v = a[left];
    int i = left + 1;
    int j = right;

    while (1) {
        while (a[i] < v && i < right)
            i++;
        while (a[j] >= v && j > left)
            j--;
        if (i >= j)
            break;
        swap(a, i, j);
    }
    swap(a, left, j);
    return j;
}

void sort(int *a, int left, int right)
{
    if (left >= right)
        return;
    int v = partition(a, left, right);
    sort(a, left, v - 1);
    sort(a, v + 1, right);
}

int main()
{   int i,n,a[32000];
    // int a[100] = { 0 };

    FILE *f = fopen("algsort.in","r");
    FILE *g = fopen("algsort.out","w");
    fscanf(f,"%d", &n);
    for(i=0; i < n;i++)
       fscanf(f,"%d",&a[i]);
    sort(a, 0, n - 1);
    for ( i = 0; i < n; i++)
        printf("%d ", a[i]);
    return 0;
}