Pagini recente » Cod sursa (job #965372) | Cod sursa (job #3129075)
#include <bits/stdc++.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
//implementarea quicksort--->derivata de la merge sort--->un pivot random
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[500001];
int partitie_random(int st, int dr)
{int i=st,j=dr,p=0;
int nr=rand()%(dr-st+1)+st;
swap(v[st],v[dr]);
while (i<j)
{
if (v[i]>v[j])
{
swap(v[i],v[j]);
p=1-p;
}
i+=p;
j-=1-p;
}
return i;
}
void mergesort(int st, int dr)
{
if (st>=dr)
return;
int pivot=partitie_random(st,dr);
mergesort(st,pivot-1);
mergesort(pivot+1,dr);
}
int main()
{srand(time(NULL));
int i;
f>>n;
for (i=0;i<n;i++)
f>>v[i];
mergesort(0,n-1);
for (i=0;i<n;i++)
g<<v[i]<<' ';
}