标题
数字分解排序
类别
综合
时间限制
1S
内存限制
1000Kb
问题描述
输入一个9位以内的正整数n,按数值从高到低的顺序输出n的各位数字。
输入说明
一个正整数
n(0<n<1000000000)
输出说明
按数值从高到低的顺序输出n的各位数字,数字之间用空格隔开
输入样例
564391
输出样例
9 6 5 4 3 1
#include<stdio.h>
#include<math.h>
#include<malloc.h>
int main(){
int n;
scanf("%d",&n);
int cnt=0,i=0;
int *p=(int *)calloc(15,sizeof(int ));
do{
*(p+i++)=n%10;
cnt++;
n/=10;
}while(n);
int j;
for(i=cnt-1;i>0;i--){
int min=i;
for(j=i-1;j>=0;j--){
if(p[j]<p[min])
min=j;
}
if(min!=i) {
int t=p[min];
p[min]=p[i];
p[i]=t;
}
}
for(i=0;i<cnt;i++){
printf("%d",p[i]);
if(i!=cnt-1) printf(" ");
}
free(p);
return 0;
}
本题没啥难度,我是基本思路拆分下来每个数字用数组储存下来,然后对数组进行选择排序。
我看到有的大佬用字符串就可以省略掉拆分数字的那个循环确实方便。