java算法之二分查找法的实例详解
2017-08-10 08:38
579 查看
java算法之二分查找法的实例详解
原理
假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1。通过数组长度可取出中间位置元素的索引,将其值与目标值比较,如果中间位置元素值大于目标值,则在左部分进行查找,如果中间位置值小于目标值,则在右部分进行查找,如此循环,直到结束。二分查找算法之所以快是因为它没有遍历数组的每个元素,而仅仅是查找部分元素就能找到目标或确定其不存在,当然前提是查找范围为有序数组。
Java的简单实现
package me.geed.algorithms; public class BinarySearch { /** * 从一个有序数组(如升序)中找到值为key元素 * @param key * @param array * @return 如果找到目标元素,则返回其在数组中的索引,否则返回-1 */ public static int find(int key, int[] array){ int low = 0; int high = array.length - 1; while (low <= high) { int mid = low + (high - low) / 2; if (array[mid] > key) { high = mid - 1; } else if (array[mid] < key) { low = mid + 1; } else { return mid; } } return -1; } public static void main(String[] args) { // TODO Auto-generated method stub int[] array = {2, 3, 5, 9, 10, 13, 23, 45, 78, 89, 100, 128, 256}; System.out.println("目标元素索引值:" + BinarySearch.find(9, array)); System.out.println("目标元素索引值:" + BinarySearch.find(26, array)); } }
输出结果为:
目标元素索引值:3 目标元素索引值:-1
二分查找算法的时间复杂度
假设范围数组长度为N,则二分查找的时间复杂度为O(logN)
以上就是java算法中二分查找的实例详解,如有疑问请留言或到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- 详解使用Java原生代理实现AOP实例
- C#打印文本文件实例详解
- Linux的find命令实例详解和mtime ctime atime
- Angular中$cacheFactory的作用和用法实例详解
- 30个实例详解TOP命令
- LVS集群--net模型、DR模型实例演示及详解
- Protocol Buffer技术详解(C++实例)
- 面向接口编程详解——编程实例--(T2噬菌体)
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)
- shell 命令行中操作HBase数据库实例详解
- C# Oracle数据库操作类实例详解
- Android PhotoView使用步骤实例详解
- IOS 开发之Swift 元组的实例详解
- MVC入门——经典MVC登录实例详解--附完整代码
- PHP JSON格式数据交互实例详解
- linux select()详解( 三)-- TCP最简实例
- Sql Server 开窗函数Over()的使用实例详解
- C# Timer用法及实例详解
- SpringMVC详解(三)------基于注解的入门实例
- IE的有条件注释判定IE版本详解(附实例代码)