排序---P1781 宇宙总统

排序---P1781 宇宙总统_第1张图片

思路:

当我们要对这些超大数进行比较排序时,如果我们用int或long基本数据类型时,会超出能承载的范围,因此我们选择用引用数据类型:BigDecimalBigInteger

区别在于基本数据类型直接比较大小,而是调用这个类里的方法进行比较大小

代码: 
法一:用BigDecimal
import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int n;
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        BigDecimal max= BigDecimal.valueOf(0);//将最大票数和总票数设置为BigDecimal类型
        BigDecimal sum;
        int number=0;
        for(int i=0;i
法二:用BigInteger4
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        BigInteger max= BigInteger.valueOf(0);
        BigInteger sum;
        int number = 0;
        for(int i=0;i
知识总结:

 BigInteger:

  • java中可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。这些大数都会以字符串的形式传入。
法三:把数字当成字符串类型,用字符串里的compareTo方法比较大小 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int n;
        Scanner scanner=new Scanner(System.in);
        n= scanner.nextInt();
        String max="";
        int number=0;
        for(int i=0;imax.length()||str.length()==max.length()&&str.compareTo(max)>0){
                max=str;
                number=i+1;
            }
        }
        System.out.println(number);
        System.out.print(max);
    }
}

你可能感兴趣的:(java,算法,排序,排序算法,洛谷)