public class SearchItem {
public static void main(String[] args) {
int[] array = { 3, 5, 7, 23, 54, 57, 60, 78, 89, 90, 101, 210, 333, 456 };
System.out.println(binarySearch(array, 456));
}
/**
* 二分法查找
*
* @param array
* 预排序数组
* @param item
* 要查找的数值
* @return 定位索引,未找到返回 -1
*/
private static int binarySearch(int[] array, int item) {
int startIndex = 0;
int endIndex = array.length - 1;
if (item > array[endIndex] || item < array[startIndex]) {
return -1;
}
int middleIndex = (startIndex + endIndex) / 2;
while (array[middleIndex] != item && startIndex <= endIndex) {
if (array[middleIndex] > item) {
endIndex = startIndex - 1;
} else {
startIndex = startIndex + 1;
}
middleIndex = (startIndex + endIndex) / 2;
}
return array[middleIndex] == item ? middleIndex : -1;
}
}
分享到:
相关推荐
采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较, 如果当前位置arr[k]值等于key,则查找成功; 若key小于当前位置值arr[k],则在数列的前半段...
C#二分查找实例 简单的算法实现对有序集合更高效地查找目标
二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2… 但是需要注意: 待查找的序列区间单调有序 例如需要查找有序数组arr里面的某个关键字key的位置,那么首先确认arr的中位...
为宿舍管理人员编写一个宿舍管理查询软件,并实现以下功能: ①采用交互工作方式建立数据文件,包括学生信息、宿舍信息、住宿信息 ②学生信息按关键字姓名进行排序 ③学生信息按关键字学号进行排序(排序方法自选,不...
二分搜索的递归和非递归实现。比较简单的实现。
在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。例如,在图1-1中,结点A是树的根结点。 子结点和 叶子结点 在树结构中,每一个结点可以有多个后件,称为该...
二分查找算法:简单的说,就是将一个数组先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如target,查找target在数组中的位置时,可以先找到数组中间的数array[middle]和target进行比较,当它比target...
JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;
01 数组、升序、二分法查找 02 简单排序:冒泡排序、选择排序、插入排序 03 栈、队列、循环队列的实现 04 循环链表的实现 05 双端链表、双向链表 06 递归、三角数、Fibonacci数列 07 汉诺塔的实现 08 希尔排序 09 ...
有序表的二分法查找 快速排序 简单选择排序 2. 绪论 掌握几个重要概念 数据结构、抽象数据类型、算法 时间复杂度的简单计算(C ) 掌握几种说法 数据元素是…,数据项是… 数据结构中关系的四种基本结构 数据...
只对日志记录的时间做索引, 简介里大概说了下索引的实现,二分查找肯定没B Tree效率高,但一般情况下也差不了一个数量级,而且实现特别简单。 因为是稀疏索引,并不是每条日志都有索引记录它的偏移量,所以读取...
BISECTION是一种处理n维数组的快速,易于使用且健壮的根查找方法。 在bisection方法的其他实现或fzero之类的其他根查找函数... 有关更简单,更易于执行的实现,请参见许多公认的其他提交内容,以了解二分法的基本原理。
实例82 二分法查找 实例83 树的动态查找 实例84 二分法求解方程 实例85 牛顿迭代法求解方程 实例86 弦截法求解方程 实例87 拉格朗日插值 // 实例88 最小二乘法拟合 ?? 实例89 辛普生数值积分 实例90 改进欧拉法 实例...
9.8将一个5×5的矩阵中最大的元素放在中心,4个角分别放在4个最小的元素(按从左到右,从上到下的顺序,依次从小到大存放),写一个函数实现之,并用main函数调用。 78 10.9在主函数中输入10个等长的字符串。用另一...
实例82 二分法查找 实例83 树的动态查找 实例84 二分法求解方程 实例85 牛顿迭代法求解方程 实例86 弦截法求解方程 实例87 拉格朗日插值 实例88 最小二乘法拟合 实例89 辛普生数值积分 实例90 改进欧拉法 ...
(1)二分法查找; B:写出下列算法的时间复杂度和实现排序: (1)冒泡排序; (2)选择排序; (3)插入排序; (4)快速排序; (5)堆排序; (6)归并排序; 23、编写gbk_strlen函数,计算含有汉字的字符串的长度,汉字作为一...
在Java程序设计过程中,对应日期和时间的格式化,还有一个简单的格式化方式,就是java.text.SimpleDateFormat,该类中用字符串指定日期和时间的格式,字符串中的字符称为模式字符,模式字符区分大小写。常见的模式...
我发现编写 fortran mexfile 有一些困难,这个小例子展示了我如何考虑在 matlab 和 fortran 之间交换数据以及“反之亦然”... 提交内容包含一个matlab测试,matlab代码fzdm.m(零查找器)及其fortran mexfile实现fzd.f