package sunfa;
//二分法查找
public class TestBinSearch {
public static void main(String[] args) {
/**
* 集合必须是排序好的,否则查不到。有多个相同的元素则只返回首先被找到的那一个。
* 参考:java.util.Arrays.binarySearch方法
*/
int[] arr={1,2,3,4,5,611,6,6,7,8,9};
int r=binSearch(arr, 6);
System.out.println(r);
}
public static int binSearch(int a[],int key){
int mid = a.length/2;
if(key==mid){
return mid;
}
int start=0;
int end=a.length-1;
while(start<=end){
mid = (end-start)/2+start;//避免(start+end)/2超过 int范围
if(key<a[mid]){
end = mid-1;
}else if(key>a[mid]){
start=mid+1;
}else{
return mid;
}
}
return -1;
}
}
分享到:
相关推荐
二分法的优点在于其简单高效,特别是当计算成本较高时(如涉及到复杂的函数运算)。然而,它不能处理多峰或多根的情况,且收敛速度相对较慢。在MATLAB中,除了二分法,还有其他更高级的求解方法,如牛顿法、拟牛顿法...
标题中的"jisuanfangfa.rar"是一个压缩包,包含了一些关于二分法、弦截法、经典算法、计算方法以及迭代法的C语言实现。下面我们将详细讨论这些算法及其在编程中的应用。 首先,二分法是一种查找算法,常用于处理...
描述中的"任意有解析式的函数"指的是任何可以用数学表达式表示的函数,这意味着二分法不仅限于简单的线性或二次函数,而是可以应用于各种复杂的数学函数,只要这些函数在其定义域内是连续的。 在编程实现二分法时,...
总的来说,二分法是一种简单而有效的数值求解工具,尤其适用于处理实数域上的连续函数。通过理解并掌握二分法的基本原理和实现,我们可以在各种实际问题中找到解决方案,无论是计算机编程还是纯数学的研究。在实际...
二分法,也称为折半搜索法,是一种在已排序的数组或区间内查找特定元素的搜索算法。在数值分析中,它被用于求解连续函数的零点。基本思想是将区间不断减半,直到找到满足条件的解或区间变得足够小。这种方法简单且...
二分法,也称为折半搜索,是一种在有序序列中查找特定元素的搜索算法。它在计算机科学中具有广泛的应用,特别是在数值计算和数据结构中。在这个“erfenfa.rar”压缩包中,我们主要关注的是如何使用二分法来求解非...
在本案例中,"mat_二分法_"指的是使用Matlab编程实现的二分法算法,用于求解方程的数值解。提供的压缩包文件包含了四个MATLAB脚本:bisection.m、bi2.m、bi.m和fun.m,它们分别可能是不同版本或实现细节的二分法算法...
在"IterTwo.cpp.bak"和"IterTwo.cpp"这两个文件中,我们可以预期找到用C语言实现的二分法算法代码。C语言以其高效和低级特性,常被用于编写数值计算程序,因为它能直接控制硬件资源,从而提高计算效率。源代码可能会...
二分法,也称为折半搜索或二分搜索,是一种在有序数组中查找特定元素的搜索算法。这个方法的关键在于其高效性,每次查询都能将搜索区间减半,因此在大量数据中查找特定值时非常有效。二分法不仅用于查找,还可以应用...
这个压缩包中的唯一文件“N2121.m”很可能是一个用MATLAB编写的脚本,用于演示或实现二分法算法。 二分法在数值计算中的应用主要体现在求解方程的根。例如,对于连续函数f(x),如果已知存在某个区间[a, b]上,f(a) ...
在给定的标题"erfenfa_said6s1_二分法_"中,"erfenfa"可能是程序或算法的名称,而"saids6s1"可能是一个特定的课程编号或项目标识,与二分法相关的学习或实践环节。 在描述中提到,该程序是使用MATLAB语言编写的,...
二分法则是一种简单直观的算法,它主要用于解决连续函数的零点问题。当函数在其定义域内是连续的,并且在一个闭区间上改变符号(即区间两端的函数值异号)时,根据介值定理,该区间内必然存在至少一个零点。二分法的...
**二分法**是一种求解实数方程根的经典算法,尤其适用于连续函数。其基本思想是:给定一个区间 [a, b],如果 f(a) * f(b) ,则该区间内存在至少一个根。不断将区间分为两半,每次选取f值异号的一半,重复此过程,...
二分法,又称折半搜索法,是一种在连续区间上求解非线性方程数值解的简单而有效的算法。在数学和计算机科学领域,它常用于解决那些不能直接解析求解的问题。二分法的基本思想是:对于一个在闭区间[a, b]内有根的连续...
2. **二分法**:这是一种简单的数值方法,用于求解单变量连续函数的根。如果函数在给定区间内零点唯一,二分法将不断将区间减半,直到找到一个足够接近零点的值。`erfenfa.m`文件很可能包含了二分法的MATLAB实现,这...
二分法的优点在于其简单性和稳定性,但缺点是收敛速度较慢,对于多峰函数可能无法找到全局最小值。 接下来是"牛顿下山法",这是一种迭代优化方法,常用于寻找函数的局部极小值。牛顿法基于泰勒级数展开,假设目标...
以下是一个简单的二分法循环实现: ```cpp #include using namespace std; int binarySearch(int arr[], int left, int right, int target) { while (left ) { int mid = left + (right - left) / 2; // ...
在这个名为“yichuansuanfa.zip_genetic_算法_遗传算法”的压缩包中,包含了一些关于遗传算法的应用实例。 首先,我们来看“新建文本文档.txt”。这个文件很可能包含了一个简单的遗传算法实现的描述或者代码示例。...
在C语言中实现二分法,虽然核心逻辑相对简单,但由于需要处理边界条件和递归或循环结构,因此代码可能会显得较为复杂。 首先,我们需要理解二分法的基本步骤: 1. **确定范围**:定义一个范围,通常是一个数组的...
例如,`erfenfa.m` 可能是一个简单的二分法求解函数: ```matlab function [root, iterations] = erfenfa(f, a, b, tol, maxIter) % f: 需要求解的函数 % a, b: 区间边界 % tol: 允许的误差 % maxIter: 最大...