📄 cpp1.cpp
字号:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
#define N 10
class number //此对象是一个三位数,可以通过对象的函数
{ //分别取出他们的个位数、十位数、百位数
public:
number(int numbe){numb=numbe;}
~number(){};
int getThenumber(){return numb;}
void setThenumber(int num){numb=num;}
int getThelast();
int getThesecond();
int getThefirst();
private:
int numb;
};
number::getThelast()
{
return numb%10;
}
number::getThesecond()
{
return (int(numb/10))%10;
}
number::getThefirst()
{
return (int(numb/100))%10;
}
void countings_sort1(number x[],number y[],int max,int choice)
{
int i,length;
int counter[N];
length=N;
for(i=0;i<length;i++)
{
counter[i]=0;
}
switch(choice)
{case 1: //根据最低位进行排序
{
for(i=0;i<length;i++)
{
counter[x[i].getThelast()]++; //统计每一相等数的个数
}
for(i=1;i<=max;i++)
{
counter[i]+=counter[i-1]; //统计小于等于i的个数
}
for(i=length-1;i>=0;i--)
{
y[--counter[x[i].getThelast()]]=x[i]; //数据放入之前序号减一,也即计数器减一。
}
break;
}
case 2: //根据第二位数排序
{
for(i=0;i<length;i++)
{
counter[x[i].getThesecond()]++; //统计每一相等数的个数
}
for(i=1;i<=max;i++)
{
counter[i]+=counter[i-1]; //统计小于等于i的个数
}
for(i=length-1;i>=0;i--)
{
y[--counter[x[i].getThesecond()]]=x[i]; //数据放入之前序号减一,也即计数器减一。
}
break;
}
case 3: //根据第一位数排序
{
for(i=0;i<length;i++)
{
counter[x[i].getThefirst()]++; //统计每一相等数的个数
}
for(i=1;i<=max;i++)
{
counter[i]+=counter[i-1]; //统计小于等于i的个数
}
for(i=length-1;i>=0;i--)
{
y[--counter[x[i].getThefirst()]]=x[i]; //数据放入之前序号减一,也即计数器减一。
}
break;
}
}
}
main()
{
int i;
number a[10]={213,432,345,342,432,542,652,257,352,43};
number output1[10]={0,0,0,0,0,0,0,0,0,0};
number output2[10]={0,0,0,0,0,0,0,0,0,0};
number output3[10]={0,0,0,0,0,0,0,0,0,0};
countings_sort1(a,output1,9,1);
for (i=0;i<10;i++)
{
cout<<output1[i].getThenumber()<<" ";
}
cout<<endl;
countings_sort1(output1,output2,9,2);
for (i=0;i<10;i++)
{
cout<<output2[i].getThenumber()<<" ";
}
cout<<endl;
countings_sort1(output2,output3,9,3);
for (i=0;i<10;i++)
{
cout<<output3[i].getThenumber()<<" ";
}
cout<<endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -