Large integer sort Huazhong University of Science (java)

题目描述
对N个长度最长可达到1000的数进行排序。
输入描述:
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
输出描述:
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
示例1
输入
复制
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
输出
复制
33333333
11111111111111111111111111111
2222222222222222222222222222222222
import java.util.*;
import java.io.*;
import java.math.*;
import java.text.* ;
public class Main
{
	public static void main(String[] args) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String str;
			while((str=br.readLine()) != null) {
				int n = Integer.parseInt(str);
				ArrayList<BigInteger> list = new ArrayList<>();
				for(int i = 0; i < n; i++) {
					list.add(new BigInteger(br.readLine()));
				}
				Collections.sort(list);
				for(int i = 0; i < n; i++)
					System.out.println(list.get(i));
			}
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}



Hand line and fast row

import java.util.*;
import java.io.*;
import java.math.*;
import java.text.* ;
public class Main
{
	public static void main(String[] args) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String str;
			while((str=br.readLine()) != null) {
				int n = Integer.parseInt(str);
				String[] data = new String[n];
				for(int i = 0; i < n; i++) {
					data[i] = br.readLine();
				}
				sort(data, 0, n-1);
				for(int i = 0; i < n; i++)
					System.out.println(data[i]);
			}
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
	public static int compare(String a, String b) {
		if(a.length() > b.length()) return 1;
		else if(a.length() < b.length()) return -1;
		else return a.compareTo(b);
	}
	//快排模板
	public static void sort(String[] data, int l, int r) {
		if(l < r) {
			int i = l;
			int j = r;
			String x = data[i];
			while(i < j) {
				while(i < j&&compare(data[j], x) >= 0) j--;
				if(i < j) data[i++] = data[j];
				while(i < j&&compare(data[i], x) < 0) i++;
				if(i < j) data[j--] = data[i];
			}
			data[i] = x;
			sort(data, l, i-1);
			sort(data, i+1, r);
		}
	}
}



Published 231 original articles · won praise 22 · views 10000 +

Guess you like

Origin blog.csdn.net/weixin_43306331/article/details/104232315