Cod sursa(job #762899)

Utilizator ioana26Ioana Andronescu ioana26 Data 30 iunie 2012 14:52:58
Problema Sortare prin comparare Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
/*
Algoritm de sortare prin comparare - QuickSort.
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MAX     500000 
int numere[MAX];

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

void quicksort (int start, int stop) {
	int i = start - 1;
	int j = stop;
    int temp = numere[(i + j) / 2];

    while (1) {
        while (numere[i] < temp)
            i++;
        while (numere[j] > temp)
            j--;
        if (i > j) 
            break;
        else {
            interschimb(&numere[i], &numere[j]);
            i++;
            j--;
        }
    }
    if (start < j)
        quicksort(start, j);
    if (i < stop)
        quicksort(i, stop);
}
 
int main () {
	int n;
	int i;

    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

	scanf("%d", &n);
	for (i = 0; i < n; i++)
		scanf("%d", &numere[i]);
	quicksort(0, n - 1);
	for (i = 0; i < n; i++)
		printf("%d ", numere[i]);
	return 0;
}