struct Int{
short int _val;
short int _count;
};
void Sort(int*ver,int const SIZE){
//ASSERT(SIZE<(unsigned short int)-1);
Int*p;
for (int i=0;i<SIZE;++i)
{
p=(Int*)&ver[ver[i]&0xFFFF];
++p->_count;
}
int count=0;
for(int i=0;count<SIZE;++i){
int j=ver[i]>>16;
while (j-->0){
ver[count]=(ver[count]&0xFFFF0000|i);
++count;
}
}
for (int i=0;i<SIZE;++i)
{
ver[i]=ver[i]&0xFFFF;
}
}
int main(){
int ver[100];
memset(ver,0,sizeof(ver));
for (int i=0;i<100;++i){
ver[i]=rand()%99+1;
}
for (int i=0;i<100;++i)
{
if (i%10==0)
cout<<endl;
cout<<setw(5)<<ver[i];
}
Sort(ver,100);
cout<<endl;
for (int i=0;i<100;++i)
{
if (i%10==0)
cout<<endl;
cout<<setw(5)<<ver[i];
}
cout<<endl;
return 0;
}