Cod sursa(job #1849769)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 17 ianuarie 2017 20:10:11
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<stdlib.h>

int N, i, x, A[500004];

//--------------------------------------------
void QuickSort(int left, int right){

int i, last, pivot, temp;

if(left>=right){
    return;
}

pivot = left + rand() % (right - left + 1);

temp = A[pivot];
A[pivot] = A[left];
A[left] = temp;

last = left;

for(i=left+1; i<=right; i++){
    if(A[i] < A[left]){
        temp = A[++last];
        A[last] = A[i];
        A[i] = temp;
    }
}
temp = A[left];
A[left] = A[last];
A[last] = temp;

QuickSort(left, last-1);
QuickSort(last+1, right);
}
//--------------------------------------------
int main() {

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

scanf("%d", &N);

for(i=0; i<N; i++){
    scanf("%d", &A[i]);
}
QuickSort(0, N-1);

for(i=0; i<N; i++){
    printf("%d ", A[i]);
}
}
//--------------------------------------------