class QSSort{
int *aPtr;
const int size;
public:
QSSort(int i=5):size(i)
{
aPtr=new int[size];
}
void Insert();
int GetSize()const{return size;}
void Sort(const int beg,const int end);
void Print()const;
};
void QSSort::Insert()
{
for(int i=0;i<size;i++)
{
scanf("%d",&aPtr[i]);
}
}
void QSSort::Sort(const int beg,const int end)
{
int i=beg,j=end;
int data=aPtr[beg];
while(i<j)
{
while(i<j&&aPtr[j]>data)
j--;
if(i<j)
aPtr[i++]=aPtr[j];
while(i<j&&aPtr[i]<data)
i++;
if(i<j)
aPtr[j--]=aPtr[i];
}
aPtr[i]=data;
Print();
if(i-1>beg)
Sort(beg,i-1);
if(i+1<end)
Sort(i+1,end);
}
void QSSort::Print()const
{
for(int i=0;i<size;i++)
printf("%d-",aPtr[i]);
printf("/n");
}
int main(array<System::String ^> ^args)
{
QSSort qs(5);
qs.Insert();
qs.Sort(0,qs.GetSize()-1);
getchar();
getchar();
return 1;
}