大整数排序

题目描述

小南有n个整数,这些整数都非常大,所以没有办法采用整数排序的方法处理,请聪明的你帮小南编写程序完成这些整数由小到大的排序。

输入

输入包含多组测试用例。
对于每一组测试用例,第一行包含一个整数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 }
View Code

 

posted on 2022-12-29 14:31  messing  阅读(88)  评论(0)    收藏  举报

导航