二分法查找
二分查找:查找元素对应索引
前提:数组元素有序
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