美文网首页
Java二分法查找数组元素下标

Java二分法查找数组元素下标

作者: 爱_别离 | 来源:发表于2019-01-23 10:45 被阅读0次
  • 二分法查找是建立在已经排序的基础之上
  • 查询元素有重复则取重复数据最大下标

package pers.ly.javase.algorithm;

import java.util.Arrays;

/**
 * 二分法查找
 * @author: Lu Yang
 * @date: 2019-01-23 10:50:37
 *
 */
public class BinarySearch {

    public static void main(String[] args) {
        Integer[] arr = {10,50,30,40,10,80,90,70,60,40,100,10};
        // 数组排序 -> 二分法必要条件 
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println(binarySearch(arr,50));
    }
    
    /**
     * 
     * @author: Lu Yang
     * @date: 2019-01-23 11:44:01 
     * @param arr 数组
     * @param value 数组元素值
     * @return
     *
     */
    public static Integer binarySearch(Integer[] arr, Integer value) {
        // 定义数组开始位置
        Integer start = 0;
        // 定义数组结束位置(arr.length是计算数组从1开始的总长度,arr.length-1计算数组从0开始的总长度)
        Integer end = arr.length - 1;
        
        // 开始位置 <= 结束位置
        while (start <= end) {
            // 定义数组的中心位置(开始位置+结束位置)/2
            Integer mid = (start + end) / 2;
            // 判断数组mid位置值(当前数据中间位置值)是否小于传过来的值
            if (arr[mid] < value) 
                // 如果小于传过来的值,数组开始位置则定义中间位置下标+1
                start = mid + 1;
            
            // 判断数组mid位置值(当前数据中间位置值)是否大于传过来的值
            if (arr[mid] > value) 
                // 如果大于传过来的值,数组结束位置则定义中间位置下标-1
                end = mid - 1;
            
            if (arr[mid] == value) 
                return mid;
            
        }
        return -1;
    }
}

相关文章

  • swift使用小技巧(4.0)

    1.查找元素查找在数组中的下标 例如在 数组a = [1,2,3,4,5] 查找元素3的下标 2.从指定下标遍历数...

  • Java二分法查找数组元素下标

    二分法查找是建立在已经排序的基础之上查询元素有重复则取重复数据最大下标

  • JS数组的二分查找算法

    用途:对有序数组进行查找。如:查找指定元素在数组中的下标

  • 二分法查找

    二分法查找 : 目的 : 查找一个数组中是否含义某个元素 : 有返回数组中的位置 ,没有返回 -1 算法: 二分法...

  • 前端面试之算法二分法

    使用二分法的前提是,目标数组的元素必须是有序排列的,所以二分法属于有序查找算法 二分法又称为“折半查找”,从数组的...

  • swift泛型约束

    查找某个数组中的元素下标(这里使用最笨的循环查找) 泛型约束

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 解析前端面试之二分查找算法

    二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。 二分法查找的思路如下: (1)首先,从数组的...

  • 算法基础—二分法查找

    一、前言     二分法查找又称为折半查找,二分法查找的基本思想是把数组中的元素从小到大有序地存放进数组中,首先将...

  • 二分法查找

    1,二分法查找,插入元素位置 2,数组旋转,求最小值问题 参考 旋转数组的最小元素

网友评论

      本文标题:Java二分法查找数组元素下标

      本文链接:https://www.haomeiwen.com/subject/wshjjqtx.html