输入第一行为一个整数N,(1<=N<=100)。 接下来的N行每行有一个数,数的长度范围为1<=len<=1000。 每个数都是一个正数,并且保证不包含前缀零。
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
3 11111111111111111111111111111 2222222222222222222222222222222222 33333333
33333333 11111111111111111111111111111 2222222222222222222222222222222222
快排思路下的大整数排序
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int n = sc.nextInt(); sc.nextLine(); String[] str = new String[n]; for(int i = 0; i < str.length; i++) { str[i] = sc.nextLine(); } quickSort(str,0,str.length-1); for(String s : str) { System.out.println(s); } } } private static void quickSort(String[] str, int left, int right) { if(left > right) { return; } int i = left,j = right; String tmp = str[left]; while (i != j) { while (i < j && !find(tmp,str[j],0)) { j--; } while (i < j && find(tmp,str[i],1)) { i++; } if(i < j) { String tmep = str[i]; str[i] = str[j]; str[j] = tmep; } } str[left] = str[i]; str[i] = tmp; quickSort(str,left,i-1); quickSort(str,i+1,right); } private static boolean find(String tmp, String s,int flag) { if(tmp.length() > s.length()) { return true; }else if(tmp.length() == s.length()) { if(tmp.equals(s)) { if(flag == 0) { return false; } else { return true; } } for (int i = 0; i < tmp.length(); i++) { if(tmp.charAt(i) > s.charAt(i)) { return true; } if(tmp.charAt(i) < s.charAt(i)) { return false; } } } return false; } }
import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ArrayList<BigInteger> list = new ArrayList<>(); int n = scanner.nextInt(); for (int i = 0; i < n; i++) list.add(new BigInteger(scanner.next())); Collections.sort(list); for (BigInteger i : list) System.out.println(i); } }
import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main { public static void main(String args[]){ Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { List<BigInteger> list = new ArrayList<>(); int n = scanner.nextInt(); for (int i = 0; i < n; i++) { BigInteger num = scanner.nextBigInteger(); list.add(num); } Collections.sort(list); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int count = 0; Data[] ds = null; while(sc.hasNext()){ count = sc.nextInt(); ds = new Data[count]; sc.nextLine(); for (int i=0;i<count;i++) { ds[i] = new Data(sc.nextLine()); } sort(ds); for (int i=0;i<ds.length;i++) { System.out.println(ds[i].getVal()); } } } /* 比较喜欢用选择排序... */ public static void sort(Data[] ds){ for (int i=0;i<ds.length;i++) { int min = i; for (int j=i+1;j<ds.length;j++) { if(ds[min].compareTo(ds[j]) > 0){ min = j; } } if(min != i){ Data temp = ds[min]; ds[min] = ds[i]; ds[i] = temp; } } } static class Data implements Comparable<Data>{ private int num; private String val; public Data(String val){ this.val = val; this.num = val.length(); } public int compareTo(Data d){ int result = this.num - d.num; if(result == 0){ result = this.val.compareTo(d.val); } return result; } public int getNum(){ return this.num; } public String getVal(){ return this.val; } } }