/**
* 二分查找法,没有找到则返回-1,否则返回查找到的位置,从0开始
* @param a
* @param target
* @return
*/
public int binarySearch(int a[],int target){
int low=0;
int high=a.length-1;
while(low<=high){
int mid=(low+high)>>>1;//无符号右移一位,即相当于绝对值除2
int midValue=a[mid];
if(midValue<target){
low=mid+1;
}else if(midValue>target){
high=mid-1;
}else{
return mid;
}
}
return -1;
}
/**
* 随机产生数组,数组长度不大于maxArraySize+1,数据不大于maxValue
* @param maxArraySize
* @param maxValue
* @return
*/
public int[] generateRandomSortedArray(int maxArraySize, int maxValue) {
Random rand=new Random();
int arraySize = 1 + rand.nextInt(maxArraySize); //至少保证有1个数据
int[] randomArray = new int[arraySize];
for (int i = 0; i < arraySize; i++) {
randomArray[i] = rand.nextInt(maxValue);
}
Arrays.sort(randomArray);
return randomArray;
}
测试代码
System.out.println("二分法查找结果:"+obj.binarySearch(a, 15));
分享到:
相关推荐
总之,"计算方法上机-二分法-C++"是一个学习和实践二分法的好资源,它通过C++代码展示了如何在有序数据中高效地进行查找操作。通过对这个程序的理解和修改,学生可以深入掌握二分法的原理,并将其应用到更复杂的算法...
- **位编码**:在存储或传输大量数据时,位运算可以用来编码和解码信息,节省空间。 3. **主要限制**: - JavaScript中的所有位运算都在32位整数范围内进行,这意味着如果超过这个范围,可能会导致意外的结果。 ...
利用Fortran实现二分法运算,例如计算方程f=x**3+4*x**2-10的零点。本程序设置较为人性化。
这个操作通常需要更复杂的算法,如二分法或者利用对数和指数函数的性质。 以上是区间运算的基本概念和它们在Matlab中的实现方式。这些函数可以用于模拟真实世界中的不确定性和误差,特别是在工程、物理和数学等领域...
在提供的压缩文件"EFNT"中,可能包含了使用C++实现的二分法和牛顿法的源代码。通过阅读和理解这些代码,你可以进一步巩固对这两种方法的理解,并且能够将它们应用到实际问题中去。同时,代码中的注释和错误处理也是...
在提供的压缩文件"二分法__1"中,可能包含了更具体的二分法实现细节、代码示例或案例分析,帮助读者深入理解如何在编程环境中应用二分法来解线性方程或其他类型的问题。学习并掌握二分法不仅可以提升数值计算的能力...
在提供的`longgekutafa.m`文件中,可能包含了四阶或更高阶的龙格库塔法的实现代码。 2. **二分法**:这是一种简单的数值方法,用于求解单变量连续函数的根。如果函数在给定区间内零点唯一,二分法将不断将区间减半...
总的来说,这个数值分析实验旨在让学生理解和应用二分法和牛顿迭代法解决实际问题,同时锻炼他们的编程能力和问题解决技巧。通过Java界面的实现,使得算法的使用更加便捷,也增强了实验的趣味性和实用性。
二分法的优点在于其简单高效,特别是当计算成本较高时(如涉及到复杂的函数运算)。然而,它不能处理多峰或多根的情况,且收敛速度相对较慢。在MATLAB中,除了二分法,还有其他更高级的求解方法,如牛顿法、拟牛顿法...
确保你的C++环境支持浮点数运算和异常处理。 通过这样的实现,你可以针对任何满足条件的方程求出其正实数根,只要给出适当的初始区间和精度要求。在实际应用中,二分法简单且易于理解,但它的收敛速度相比其他数值...
开根号是数学运算中的基本操作,特别是在计算机科学和编程领域。本文将深入探讨四种不同的开根号算法:二分法、牛顿迭代法、卡马克算法以及其他可能的方法。每种算法都有其独特的优缺点,适用于不同的场景。 首先,...
在"IterTwo.cpp.bak"和"IterTwo.cpp"这两个文件中,我们可以预期找到用C语言实现的二分法算法代码。C语言以其高效和低级特性,常被用于编写数值计算程序,因为它能直接控制硬件资源,从而提高计算效率。源代码可能会...
二分法,也称为折半搜索或区间搜索,是一种在有序数组中查找特定元素的算法。...通过阅读和理解这段代码,你可以更好地掌握二分法在MATLAB中的应用,并能够自行编写类似的程序来解决其他数值问题。
实验中,我们使用C语言编写了源程序,包括二分法、牛顿迭代法和普通迭代法等方法的实现代码。 五、 结果 实验结果表明,二分法、牛顿迭代法和普通迭代法等方法都可以用于求根运算,但是它们的效率和收敛性存在一定...
二分法的优点在于其稳定性和简单性,但缺点是收敛速度较慢。 牛顿法,又称牛顿-拉弗森方法,是通过迭代求解非线性方程组的根。它基于泰勒级数展开,利用函数在某一点的切线近似来逼近根。牛顿法的公式为:x_{n+1}=x...
本项目“科学计算器源代码”提供了一种实现科学计算功能的方法,适用于那些需要进行复杂数学运算的用户。C语言的灵活性和效率使其成为创建高效计算工具的理想选择。 科学计算器通常包含以下功能: 1. 基本运算:加...
8. **大整数指数运算**:`eyu`函数处理指数运算,可以使用二分法或快速幂算法来提高效率。 9. **性能计时**:为了评估运算效率,代码中提到了统计运算时间的部分,这可以通过`<ctime>`库中的`clock()`函数实现,...
开平方运算通常采用迭代算法,例如牛顿法或二分法。这些算法需要多次逼近,逐渐提高精度,直至达到设定的阈值。在VHDL中,我们可以用状态机来控制迭代过程,根据当前估计值和目标值的差异调整计算方向。同时,为了...
MATLAB是一种强大的数学软件,它提供了一个可以进行多种数值计算的环境,尤其擅长矩阵运算和图形绘制。在数值分析的学习和应用中,MATLAB因其简洁的语法、强大的数值计算能力和直观的图形显示而被广泛使用。无论是...
在IT领域,数值计算是计算机科学的一个重要分支,它涉及到一系列用于解决数学问题的算法,尤其是在处理浮点数和复数运算时。C#作为现代编程语言,提供了丰富的特性和库来支持数值计算。"C#数值计算算法源代码"这个...