#include<iostream>
using namespace std;
//栈类
class zhan
{
private:
int n;
int *zhankongjian;
int zhanmax;
public:
zhan()
{
zhanmax=100;
zhankongjian=new int [zhanmax];
n=0;
}
void ruzhan(int a)
{
if(n==zhanmax)
{
int *newzhan = new int[zhanmax*2];
for(int i=0;i<zhanmax;i++)
{
newzhan[i]=zhankongjian[i];
}
delete [] zhankongjian;
zhankongjian = newzhan;
zhanmax = zhanmax + zhanmax;
}
zhankongjian[n]=a;
n++;
}
int chuzhan()
{
if(n>0)
{
n--;
int a = zhankongjian[n];
zhankongjian[n] = 0;
return a;
}
else
{
return NULL;
}
}
int iskong()
{
if(n==0)
{
return 1;
}
else
{
return 0;
}
}
~zhan()
{
delete [] zhankongjian;
}
};
//主函数
int main()
{
zhan zn;
int a[]={5,454,3,23,234,636,364,2,35,64};
int j;
int m;
zn.ruzhan(10);
int start=0;
int end=10;
while(!zn.iskong())
{
while(end-start>1)
{
j=start;
m=a[j];
for(int i=start;i<end;i++)
{
if(a[i]<m)
{
if(i-j==1)
{
int t = a[j];
a[j]=a[i];
a[i]=t;
}
else
{
int t = a[j];
a[j]=a[j+1];
a[j+1]=t;
t = a[j];
a[j]=a[i];
a[i]=t;
}
j++;
}
}
zn.ruzhan(j);
end = j;
}
start = zn.chuzhan()+1;
//将栈顶元素借出来用用。
if(!zn.iskong())
{
end = zn.chuzhan();
//再存回去。。
zn.ruzhan(end);
}
else
{
break;
}
}
for(int index=0;index<10;index++)
{
cout<<a[index]<<" ";
}
cout<<endl;
return 0;
}