Java 基础 快速掌握2分法查找
2018-01-15 16:35
351 查看
一、概述
2分法查找是一种查找算法,它的优点是:1、比较的次数少
2、查找的速度快
3、平均性能好
有个缺点是:
1、查找的列表必须要是 有序 的
二、思路
1、在给出的有序排列的数组中,把 目标值 和 数组中间值 进行比较2、如果相等,则返回中间值下标
3、如果目标值 小于 中间值,就从数组的 前半段 再次执行二分法查找
4、如果目标值 大于 中间值,从数组的 后半段 开始二分法查找
二、实现
public class MathUtils { public static void main(String[] args) { //有序排列数组(大到小,小到大无所谓) int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //打印二分法的返回值 System.out.println(findRecursive(array, 0, array.length - 1, 9)); } /** * 递归查找-2分法 * * @param array 需要查找的数组 * @param start 开始位置 * @param end 结束位置 * @param findValue 要查找的数据 * @return */ public static int findRecursive(int 4000 [] array, int start, int end, int findValue) { if (array == null) { return -1; } if (start <= end) { //中间位置 int middle = (start + end) / 2; //中值 int middleValue = array[middle]; if (findValue == middleValue) { //与中值相等就直接返回 return middle; } else if (findValue < middleValue) { //目标值小于中值,在中值前面找(这里调用了二分法的方法) return findRecursive(array, start, middle - 1, findValue); } else { //目标值大于中值,在中值后面找(这里调用了二分法的方法) return findRecursive(array, middle + 1, end, findValue); } } else { //返回-1,查找失败 return -1; } } }
OK,非常简单的2分法查找,就简单介绍到这里,不要纠结算法的实现过程.很痛苦,知道特点能灵活运用即可!
谢谢大家参考!
相关文章推荐
- Java 基础快速掌握 TCP 3次握手和4次握手的理解
- 8天快速掌握Android视频(完整版--适合有JavaWeb基础学习)
- 快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)
- 8天快速掌握Android视频(完整版--适合有JavaWeb基础学习)
- 快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)
- 快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)
- Java基础知识强化61:经典查找之二分查找使用注意事项
- Java基础掌握(三)
- 快速掌握Ajax-Ajax基础实例
- java基础案例:在数组中查找指定元素
- Java基础必备---二分法查找
- 学java需掌握的面试基础……?
- Java中数组Arrays.binarySearch,快速查找数组内元素位置
- java基础-使用Arrays管理数组排序,复制,查找,填充
- 【Java基础】选择排序、冒泡法排序、二分法查找
- 快速掌握Ajax-Ajax基础实例
- 蓝桥杯 基础练习 查找整数 JAVA
- java 基础数据遍历(2)----二维数组查找
- 深入学习JAVA-WEB开发时扎实掌握JAVA基础的重要性
- Java基础:需掌握的30个基本概念