Pagini recente » Cod sursa (job #1837972) | Cod sursa (job #1757233) | Cod sursa (job #1272535) | Cod sursa (job #938128) | Cod sursa (job #2296136)
//Sortarea prin QuickSort
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
int v[500001];
void QuickSort(int v[],int st, int dr)
{
if(st>=dr)//daca st>=dr atunci iesim din program
{
return;
}
int i,j,pivot=v[rand()%(dr-st)+st];
//alegem pivotul in mod aleator
i=st;
j=dr;
while(i<=j)
{
while(v[i]<pivot) // daca v[i]<pivot il crestem pe i
{
i++; //facem acest lucru pana cand nu mai avem elemente mai mici la stanga pivotului
}
while(v[j]>pivot) //daca v[j]>pivot il scadem pe j
{
j--; //facem acest lucru pana cand nu mai avem elemente mai mari la dreapta pivotului
}
if(i<=j)
{
swap(v[i],v[j]);//schimbam elementel v[i] si v[j];
i++; //incrementam i
j--; //decrementam j
}
}
//se reapeleaza quicksot
QuickSort(v,st,j);//pentru prima jumatate
QuickSort(v,i,dr);//pentru a doua jumatate
}
int main()
{
srand(time(NULL));
int N,i;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>N;
for(i=0;i<=N-1;i++)
{
fin>>v[i];
}
QuickSort(v,0,N-1);
for(i=0;i<=N-1;i++)
{
fout<<v[i]<<" ";
}
return 0;
}