strtok + sort就搞定了。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX 1000 + 2
char str[MAX];
int a[MAX];
int main(){
int count;
char *p;
while(scanf("%s", str) == 1){
count = 0;
p = strtok(str, "5");
while(p != NULL){
sscanf(p, "%d", &a[count++]);
p = strtok(NULL, "5");
}
sort(a, a + count);
int flag = 0;
for(int i = 0; i != count; ++i)
if(!flag) printf("%d", a[i]), flag = 1;
else printf(" %d", a[i]);
putchar('\n');
}
return 0;
}