标题 数字分解排序 类别 综合 时间限制 1S 内存限制 1000Kb 问题描述 输入一个9位以内的正整数n,按数值从高到低的顺序输出n的各位数字。 输入说明 一个正整数n(0<n<1000000000) 输出说明 按数值从高到低的顺序输出n的各位数字,数字之间用空格隔开 输入样例 564391 输出样例 9 6 5 4 3 1
本题难度较小,关键在于把“一个9位以内的正整数n”看作是一个字符串,这样处理起来更加方便。
#include<stdio.h>
#include<string.h>
void BubbleSort(char* a, int n) { //优化修改过的冒泡排序
for (int i = 0; i < n - 1; i++) {
int flag = 1;
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] < a[j + 1]) {
flag = 0;
char tmp = a[j + 1];
a[j + 1] = a[j];
a[j] = tmp;
}
}
if (flag) {
break;
}
}
}
int main(int argc, char* argv[]) {
char s[10] = { 0 };
gets(s);
int n = strlen(s);
BubbleSort(s, n);
for (int i = 0; i < n; ++i)printf("%c ", s[i]);
return 0;
}