大整数排序
题目描述
小南有n个整数,这些整数都非常大,所以没有办法采用整数排序的方法处理,请聪明的你帮小南编写程序完成这些整数由小到大的排序。
输入
输入包含多组测试用例。
对于每一组测试用例,第一行包含一个整数n(0<n≤200)。
接下来n行每行包含一个整数x (0≤x≤101000)。
对于每一组测试用例,第一行包含一个整数n(0<n≤200)。
接下来n行每行包含一个整数x (0≤x≤101000)。
输出
对于每一组测试数据,输出排序后的结果。
样例输入 Copy
2
20
10
3
11111111111111111111111111111
22222222222222
33333333
样例输出 Copy
10
20
33333333
22222222222222
11111111111111111111111111111
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 struct array { 6 char a[1001]; 7 int len; 8 }; 9 10 11 int cmp(const void *a,const void *b){ 12 struct array *c = (struct array *)a; 13 struct array *d = (struct array *)b; 14 if(c->len != d->len){ 15 return c->len - d->len;//len不同,比较len 16 } 17 else{ 18 return strcmp(c->a,d->a);//len相同,比较数字大小 19 } 20 } 21 22 23 int main(){ 24 int n; 25 while(scanf("%d",&n)!=EOF){ 26 struct array a[200]; 27 for(int i=0;i<n;i++){ 28 scanf("%s",a[i].a); 29 a[i].len=strlen(a[i].a); 30 } 31 qsort(a,n,sizeof(a[0]),cmp); 32 for(int i=0;i<n;i++){ 33 printf("%s\n",a[i].a); 34 } 35 } 36 return 0; 37 }
浙公网安备 33010602011771号