public class Arithmetic {
public static void main(String args[]){
//二分法,一般用于已经排序的数组,数据量大时,性能优势更为明显
//如果无序,可先排序
int tt[] = {-3,0};
int loopCount = tt.length;
System.out.println(erfen(-1,tt,0,loopCount-1));
}
//对于递归,递归方法里一定有迭代的不断变化的参数,这里是起始和终止index
//不管如何递归,都是对被查询的数据和数组进行操作,所以searchdata和
//arr是可以不发生变化并作为递归方法的参数
public static int erfen(int searchdata,int[]arr,int start,int endIndex){
int index;
//对于被寻找的数据在数组边缘的情况需要单独考虑
//在边缘时也囊括了数组长度比较极端的情况,长度为1,或者2,
//对于数据量比较少的情况,一般不采用特殊的算法,直接遍历就ok
if(searchdata==arr[start]){//寻找的数在数组的第一个位置
index = start;
System.out.println(searchdata +" index is :" +index);
return index;
}else if(searchdata==arr[endIndex]){//寻找的数在数组的最后一个位置
index = endIndex;
System.out.println(searchdata +" index is :" +index);
return index;
}
if((endIndex-start)<=1){//此时两个数已经相邻
index = 0;
System.out.println("not existing ");
}else{
index = (endIndex+start)/2;
if(searchdata<arr[index]){
index = erfen(searchdata,arr,start,index);
}else if(arr[index]==searchdata){
System.out.println(searchdata +" index is :" +index);
}else if(arr[index]<searchdata){
index = erfen(searchdata,arr,index,endIndex);
}
}
return index;
}
}
相关推荐
对于区间[a,b]上连续不断且f(a)·f(b)的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。 算法:当数据量很大适宜采用该...
二分法流程图1
二分法排序算法 C语言实现 个人爱好 希望相互学习
利用java二分法来计算最靠近值,通过二分法来遍历数据,得到想要最近值
本例实现了用c语言实现了二分法求解方程。本例主要介绍用二分法求解方程f(X)=sin(x)在(-3,7)这个范围内的解C语言实现方法。 求解主要通过函数BisectRoot()来完成。该函数首先根据二分法的需要扫描根的存在 及根的...
java 求解非线性方程 二分法 牛顿法 弦截法 public class Binary { static double m, n, jingdu; static int flag = 0; /** * @param args * 二分法 */ public static double binary(double m, double ...
二分法(dichotomie) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的...
二分法解非线性方程C++代码
用C++程序编的二分法,通俗,容易懂,实验报告也有用!
二分法 解函数 c++语言 c语言 递归 数根
二分法排序和查找(C#)
c语言二分法求解方程c语言二分法求解方程c语言二分法求解方程
二分法和牛顿迭代法求解方程二分法和牛顿迭代法求解方程二分法和牛顿迭代法求解方程二分法和牛顿迭代法求解方程
利用Fortran实现二分法运算,例如计算方程f=x**3+4*x**2-10的零点。本程序设置较为人性化。
% 二分法解方程 % Bisection Method % The first parameter fx is a external function with respect to viable x. % xa is the left point of the initial interval % xb is the right point of the initial ...
此资源师大学教材数值分析一科中的二分法的上机实验代码(C语言版)
C语言实现的二分法快速查找|二分法排序|二分法查找C#
文中给出一种解非线性超越方程组的数值方法,先用二分法原理给出解一个一元方程的流程,继而利用这个流程给出解二元方程 组的流程,再推广到 N 元的方程组中。 在数值计算过程中,通过对超越方程组的一元化处理,仅利用...
c#练习二分法示例二分法查找是一种非常高效的搜索方法,主要原理是每次搜索可以抛弃一半的值来缩小范围。其时间复杂度是O(log2n),一般用于对普通搜索方法的优化。 二分法的适用情况一般满足以下几点:(1)该数组...
用C/C++方法描述二分法求方程根的简单程序