给定机器人两个自然数A和B,让它将 [A,B] 区间中的所有数按从小到大排序出来。你会认为它如何排序?
输入说明:两个正整数A B表示待排序元素的区间范围. (1<=A<=B<=200000 B-A<=50)
输出说明:输出一行,为所有排好序的元素,元素之后有一个空格.
样例输入1:
22 39
样例输出1:
30 31 22 32 23 33 24 34 25 35 26 36 27 37 28 38 29 39
样例输入2:
10 8
样例输出1:
Invalid Data
package week06;
import java.util.Arrays;
import java.util.Scanner;
public class RobotNum {
public int Reverse(int n) {
int x,sum=0;
while(n!=0) {
x=n%10;
sum*=10;
sum+=x;
n/=10;
}
return sum;
}
public static void main(String[] args) {
RobotNum way=new RobotNum();
Scanner input=new Scanner(System.in);
int a=input.nextInt();
int b=input.nextInt();
input.close();
if(a>b||a<=1||b>200000||(b-a)>50) System.out.println("Invalid Data");
else {
int []A=new int [b-a+1];
for(int i=a,j=0;i<=b;i++,j++) {
A[j]=way.Reverse(i);
}
Arrays.sort(A);
for(int i=0;i<A.length;i++) {
if(way.Reverse(A[i])>=a/10000&&way.Reverse(A[i])<=b/10000) {
System.out.print(way.Reverse(A[i])*10000+" ");
}
else if(way.Reverse(A[i])>=a/1000&&way.Reverse(A[i])<=b/1000) {
System.out.print(way.Reverse(A[i])*1000+" ");
}
else if(way.Reverse(A[i])>=a/100&&way.Reverse(A[i])<=b/100) {
System.out.print(way.Reverse(A[i])*100+" ");
}
else if(way.Reverse(A[i])>=a/10&&way.Reverse(A[i])<=b/10) {
System.out.print(way.Reverse(A[i])*10+" ");
}
else System.out.print(way.Reverse(A[i])+" ");
}
}
}
}