【算法笔记5.6小节 -大整数运算 】E : 大整数排序(大数比较大小 + 冒泡排序)

题目描述

对N个长度最长可达到1000的数进行排序。

输入

输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。

输出

可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。

样例输入

4
123
1234
12345
2345

样例输出

123
1234
2345
12345

冒泡排序 + 大数比较大小

大数比较大小的思路:

  1. 长度大者大。
  2. 长度小者小。
  3. 同长比较相同位大小。
    #include
    #include
    
    struct bign{
        int d[1001];
        int len;
        bign()
        {
            memset(d,0,sizeof(d));
            len = 0;
        }
    };
    bign change(char a[])//正向存储
    {
        bign c;
        for(int i=0; ib.len) return 1;//a大
        else if(a.lenb.d[i]) return 1;
                else if(a.d[i]

二刷更新

#include
#include
using namespace std;
char a[101][1001];
int check(char x[], char y[])
{
    int lenx = strlen(x);
    int leny = strlen(y);
    if(lenx > leny) return 1;
    else if(lenx < leny) return 0;
    else
    {
        for(int i=0; i y[i])
                 return 1;
            if(x[i] < y[i]//这个不写会50%错误,原因可能是超时
                 return 0;
        }
        return 0;
    }
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0; i

 

 

你可能感兴趣的:(【算法笔记】,Codeup墓地)