⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wed.cpp

📁 对到位地位的的算法排序
💻 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 + -