Cod sursa(job #2669664)

Utilizator andrei_ciobanuciobanu andrei andrei_ciobanu Data 7 noiembrie 2020 15:42:35
Problema Sortare prin comparare Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>

void swap(int *a, int *b){
    int aux = *a;
    *a = *b;
    *b = aux;
}

void mysort(int v[], int start, int end){
    int pivot = v[(start + end) / 2];
    int i1 = start, i2 = end;
    while (v[i1] < pivot) i1 ++;
    while (v[i2] > pivot) i2 --;
    while (i2 > i1){
        swap(&v[i1], &v[i2]);
        do i1 ++; while (v[i1] < pivot);
        do i2 --; while (v[i2] > pivot);
    }
    if (start < i2) mysort(v, start, i1);
    if (i1 + 1 < end) mysort(v, i1 + 1, end);

}

int main()
{
    FILE *fin, *fout;
    fin= fopen("algsort.in", "r");
    fout = fopen("algsort.out", "w");
    int v[100], n;
    fscanf(fin, "%d", &n);
    for (int i = 0; i < n ; i ++){
        fscanf(fin, "%d", &v[i]);
    }
    mysort(v, 0, n - 1);
    for (int i = 0; i < n; i ++) fprintf(fout, "%d ", v[i]);
    return 0;
}