Cod sursa(job #663817)

Utilizator I.AlexandruIlie Alexandru I.Alexandru Data 18 ianuarie 2012 23:19:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#include<cstdlib>
#define maxn 500000
using namespace std;

int i, n, v[maxn];

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

void quicksort(int v[], int start, int end) 
{int i=start;
int j=end;
int pivot=v[i+rand()%(j-i)];

while(i<=j)
     {while(v[i]<pivot)
           i++;
      while(v[j]>pivot)
           j--;
      if(i<=j)
        {swap(v[i], v[j]);
         i++;
         j--;
        }
     }
     
if(start<j)
  quicksort(v, start, j);
if(i<end)
  quicksort(v, i, end);
}

int main()
{freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);

for(i=0; i<n; i++)
   scanf("%d", &v[i]);
	
srand(time(NULL));
quicksort(v, 0, n-1);
				
for(i=0; i<n; i++)
   printf("%d ", v[i]);

return 0;
}