Pagini recente » Cod sursa (job #2195608) | Cod sursa (job #895530) | Cod sursa (job #3249391) | Cod sursa (job #1563999) | Cod sursa (job #3254654)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500005];
int n;
void QuickSort(int st, int dr)
{
if(st < dr){
//aleg V[st] pivot
int mij=(st+dr)/2;
swap(v[st],v[mij]);
int i = st;
int j = dr;
int mod = 0;//Modul 0: pivotul este v[i] si j=j-1,i=i+0
//Modul 1: pivotul este v[j] si i=i+1,j=j+0
//mod = 1-mod; este instructiunea care schimba modul de lucru
while(i < j)
{
if(v[i] <= v[j])
{
i = i+mod;
j = j-(1-mod);
}
else
{
swap(v[i],v[j]);
mod = 1- mod;
}
}
//elementul pivot a fost plasat pe pozitia i
QuickSort(st, i-1);
QuickSort(i+1,dr);
}
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> v[i];
QuickSort(1,n);
for(int i = 1; i <= n; i++)
cout << v[i] <<" ";
return 0;
}