📄 wed.cpp
字号:
//我保证作业时是立完成的
//输入数组时在puke里面,先输入数组大小num,再输入各个牌的花色和数字,共三位,最高为是花色,后两位是数字
#include <iostream>
#include <fstream>
using namespace std;
void sort(int* Array,int n)
{
int * TempArray=new int[n];//暂时数组,存储传入的扑克数组
int m,j,k;
for(int i=1;i<=2;i++)//高位是花色,低位是数字,共两位
{
if(i==1)//数字
m=14;
else
m=4;//花色
int * count=new int[m];//创建计数器,统计花色和数字出现的个数
for(j=0;j<m;j++)
count[j]=0;//计数器初始化
if(i==1)//先考虑数字
{
for(j=0;j<n;j++)//对数组里面数字位的统计
{
int temp=Array[j]/100;
k=(Array[j]-100*temp)%14;
count[k]++;
}
}
else
{
for(j=0;j<n;j++)//对花色位的统计
{
k=(Array[j]/100)%4;
count[k]++;
}
}
for(j=1;j<m;j++)//对小于等于J的统计
count[j]=count[j-1]+count[j];
for(j=n-1;j>=0;j--)//从尾部输出保证排序的稳定性
{
if(i==1)//按照数字位的顺序排序
{
int temp=Array[j]/100;
k=(Array[j]-100*temp)%14;
TempArray[--count[k]]=Array[j];
}
else//对花色位的排序
{
k=(Array[j]/100)%4;
TempArray[--count[k]]=Array[j];
}
}
for(j=0;j<n;j++)
Array[j]=TempArray[j];
}
delete []TempArray;
return;
}
void main()
{
ifstream ifs("puke.txt");//用C++的输入输出流
int num;//数组的大小
ifs>>num;
int * Array=new int[num];
for(int i=0;i<num;i++)
{
ifs>>Array[i];//数组元素的输入
}
ifs.close();
sort(Array,num);//计数排序的调用
for( i=0;i<num;i++)
{
int begin=Array[i]/100;
if(begin==2)
cout<<(char)3;
else
if(begin==3)
cout<<(char)6;
else
cout<<(char)(begin+4);
cout<<Array[i]-100*begin<<" ";
}
cout<<endl;
delete []Array;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -