【排序,近似排序,结构体排序】

题目描述

读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30。

输入

1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中l≤第一个数≤第二个数≤999999999,两个数之差不超过100。

输出

输出排序后的数据,每行输出一个数。

样例输入 Copy
22 39
样例输出 Copy
30
31
22
32
23
33
24
34
25
35
26
36
27
37
28
38
29
39

思路:

1.因为最终输出的是原始数据,而比较的是倒序后大小---->>>故用结构体记录变化前后的值,便于后续输出;

2.同时运用结构体排序

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct shu{
    ll t1; //原始数据
    ll t2;//倒序后的值
}tp[110];
ll cmp(shu x,shu y)
{
    return x.t2<y.t2;
}
int main()
{
    ll a,b,j=0,n;
    cin>>a>>b;
    n=b-a+1;
    for(int i=a;i<=b;i++)
    {
        ll sum=0,k=i;
        tp[j].t1=i;
        while(k) //倒序模板
        {
            ll t=k%10;
            sum=sum*10+t;
            k=k/10;

        }
        tp[j].t2=sum;
        j++;
    }
    sort(tp,tp+n,cmp);
    for(int i=0;i<n;i++)
        cout<<tp[i].t1<<endl;
    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值