📄 zz.cpp
字号:
#include <stdio.h>
int digitk(int no, int kth)
{
int i,j,m;
m=10;
if(kth==0) // 计算个位数
i=no%m;
else
{
// 计算较高位数所需的m值
for(j=1;j<kth;j++)
m=m*10;
i=((int)(no/m))%10;
}
return i;
}
void base_sort(int *A)
{
int i,j,k,index,no;
int nocount[10]={0,0,0,0,0,0,0,0,0,0};
int noarray[10][10]; //10行10列矩阵
for (i=0;i<=2;i++)
{
for(j=0;j<=9;j++)
{ nocount[j]=0; }
for(j=0;j<=9;j++)
{ // 取出数字
no=digitk(A[j],i);
noarray[nocount[no]][no]=A[j];//存入矩阵中
nocount[no]=nocount[no]+1; //该列的行增1
}
index=0;
for(j=0;j<=9;j++) //取出各数字阵列的资料回A阵列中
{
for(k=0;k<nocount[j];k++)
{ A[index]=noarray[k][j];
printf("%-7d",A[index]);
index++;
}
}
printf("\n");
printf("\n");
}
}
void main()
{
int i;
int A[10]={288,371,260,531,287,235,56,299,18,23};
printf("初始值为:\n");
for(i=0;i<=9;i++)
printf("%-5d",A[i]);
printf("\n\n三趟分配收集结果分别为:\n");
base_sort(A);
printf("基数排序最终收集结果为:\n");
for(i=0;i<=9;i++)
printf("%-5d",A[i]);
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -