Pagini recente » Cod sursa (job #1295872) | Cod sursa (job #1396068) | Cod sursa (job #1721710) | Cod sursa (job #1596679) | Cod sursa (job #690840)
Cod sursa(job #690840)
/*
* algsort.cpp
*
* Created on: Feb 25, 2012
* Author: ioana
*/
#include<cstdio>
int N;
template<class T>
class qSort
{
private:
T *v;
int N;
public:
qSort(int N)
{
this->N=N;
this->v = new T [N];
}
~qSort()
{
}
qSort<T>* vector()
{
return this->v;
}
void pb(T x,int p)
{
this->v[p]=x;
}
T getVal (int p)
{
return this->v[p];
}
};
qSort<int> v(500000);
void quickSort(qSort<int> arr, int left, int right)
{
int i = left, j = right;
int tmp;
int pivot = arr.getVal((left + right) / 2);
/* partition */
while (i <= j)
{
while (arr.getVal(i) < pivot)
i++;
while (arr.getVal(j) > pivot)
j--;
if (i <= j) {
tmp = arr.getVal(i);
arr.pb(arr.getVal(j),i);
arr.pb(tmp,j);
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&N);
for (int i=0; i<N; ++i)
{
int x;
scanf("%d",&x);
v.pb(x,i);
}
quickSort(v,0,N-1);
for (int i=0; i<N; ++i)
{
printf("%d ",v.getVal(i));
}
return 0;
}