二分法查找

二分法查找

二分查找:查找元素对应索引
前提:数组元素有序

public static int getIndex(int[] arr, int value) {
    int min = 0;//数组中最小值
    int max = arr.length - 1;//最大值
    int mid = (min + max) / 2;//中间值
    while (arr[mid] != value) {//当中间值不等于要查找的值时,比较大小
        if (value < arr[mid]) {
            max = mid - 1;
        } else if (value > arr[mid]) {
            min = mid + 1;
        }
        mid = (min + max) / 2;
        if (min > max) {//如果最小值
            mid = -1;
            break;
        }
    }
    return mid;
}

Arrays.方法:

int[] arr = {33,22,11,44,55};
Arrays.toString(arr);//数组转字符串
Arrays.sort(arr);//排序
Arrays.binarySearch(arr,88);//二分查找,数组需要排好序/如果查找到值不存在,返回负的插入点-1;例 这个返回-6

BigInteger

可以让超过Integer范围的数据进行运算
构造方法:public BigInteger(String val){}//可以放字符串

BigInteger bi1 = new BigInteger("100");
BigInteger bi2 = new BigInteger("2");
bi1.add(bi2);    //+
bi1.substract(bi2);    //-
bi1.multiply(bi2);    //*
bi1.divide(bi2);    //除

BigInteger[] arr = bi1.divideAndRemainder(bi2);    //返回一个数组储存/和%的结果

BigDecimal

BigDecimal bd1 = new BigDecimal("2.0");//参数是数字,不精确,不推荐用;参数是字符串,推荐,是精确的
BigDecimal bd2 = new BigDecimal("1.1");
bd1.substract(bd2);    

BigDecimal bd1 = BigDecimal.valueOf(2.0);
BigDecimal bd2 = BigDecimal.valueOf(1.1);
bd1.substract(bd2);    
//这种也可以,valueOf返回一个BigDecimal