求数列的中间数
公式:(首项 + 末项) / 2 = 中间数
java 二次法算法查找(使用到了中间数)
public static void main (String[] args) {
int srcArray[] = {3 ,5 ,11 ,17 ,21 ,23 ,28 ,30 ,32 ,50 ,64 ,78 ,81 ,95 ,101 };
System.out.println(binSearch2(srcArray, 0 , srcArray.length-1 , 4 ));
}
/**
*递归 实现二分查找算法
* 正确返回值值 :返回查询数组内的数值下标
* 错误返回值 : -1
* */
public static int binSearch2 (int srcArray[] ,int start ,int end ,int key){
int mid = (start + end ) / 2 ;
if (srcArray[mid] == key){
return mid;
}
if (start >= end){
return -1 ;
}else if (key > srcArray[mid]){
return binSearch2(srcArray, start + 1 , end, key);
}else if (key < srcArray[mid]){
System.out.println(mid);
return binSearch2(srcArray, start, mid-1 , key);
}
return -1 ;
}
求数列中的有多少项数
如:1-100之间的有多少个数字?
公式1:项数 = (末项 - 首项)+ 1 (连续数列可用)
public static void main(String[] args) {
System.out.println(Count(1,100));
}
public static int Count(int start , int end ){
int count = (end - start)+1;
return count;
}
等差数列求和
例: 求 1-100之间整数和
公式1:等差和 = (首项 + 末项)项数 / 2
公式2:等差和 = 公差/2 * 项数的2次方 + (首项 - 公差/2) * 项数
求第n项数值:An = A1 + (n-1)* d
public static void main (String[] args) {
System.out .println(Count(1 ,100 ));
}
public static int Count (int start , int end ){
int count = (end - start)+1 ;
int sum = (start + end )* count / 2 ;
return sum;
}
}
等比数列求和
例:求 2,4,8,16...100
ps: 公比就是 后一个数字除以前一个数字所得
公式:等比和 = 公比 * (1 - 公比的N次方) /(1 - 公比 )