Pagini recente » Cod sursa (job #2320434) | Cod sursa (job #967864) | Cod sursa (job #97257) | Cod sursa (job #715381) | Cod sursa (job #1280738)
#include <stdio.h>
#include <fstream>
#include <queue>
#define Nmax 500001
using namespace std;
void swapVec(int x, int y, int v[])
{
if(x == y)return;
v[x] = v[x] ^ v[y];
v[y] = v[x] ^ v[y];
v[x] = v[x] ^ v[y];
}
void quickSort(int left, int right, int v[])
{
if(left >= right)
return;
if(left + 1 == right)
{
if(v[left] > v[right])
swapVec(left, right, v);
return;
}
int pivot = (left + right)/2;
swapVec(pivot, right, v);
int l = left, r = right - 1;
while(l < r)
{
while(v[l] <= v[right] && l <= r)++l;
while(v[r] >= v[right] && l <= r)--r;
if(l >= r)
continue;
swapVec(l, r, v);
}
swapVec(right, l, v);
quickSort(left, l - 1, v);
quickSort(l+1, right, v);
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int N, v[Nmax];
f>>N;
for(int i = 1;i <= N;++i)
f>>v[i];
f.close();
quickSort(1, N, v);
for(int i=1;i<=N;++i)
g<<v[i]<<" ";
g.close();
return 0;
}