-
题目描述:
-
对N个长度最长可达到1000的数进行排序。
-
输入:
-
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
-
输出:
-
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
-
样例输入:
-
3 11111111111111111111111111111 2222222222222222222222222222222222 33333333
-
样例输出:
-
33333333 11111111111111111111111111111 2222222222222222222222222222222222
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a, const void *b) {
char *tmp1 = (char *)a;
char *tmp2 = (char *)b;
int len1 = strlen(tmp1);
int len2 = strlen(tmp2);
if(len1 != len2) {
return len1 - len2;
}
else {
int i;
for(i = 0; i < len1; i++) {
if(tmp1[i] != tmp2[i]) {
return tmp1[i] - tmp2[i];
}
}
return 0;
}
}
int main() {
int n, i;
char buff[105][1005];
while(scanf("%d", &n) != EOF) {
for(i = 0; i < n; i++) {
scanf("%s", buff[i]);
getchar();
}
qsort(buff, n, sizeof(buff[0]), cmp);
/*for(i = 0; i < n; i++) {
printf("%s\b", buff[i]);
}*/
for(i = 0; i < n; i++) {
printf("%s\n", buff[i]);
}
}
return 0;
}