您好,欢迎访问一九零五行业门户网

Java中如何使用二分法查找数组元素位置

1、二分法说明
二分法的核心思想就是索引的移动,查找速度是几何级递增的。
二分查找法,返回查找到数组元素的索引,如果找不到返回-1
2、实例
二分法定位参数值在数组中的位置
场景描述:
根据一个参数值找到它在数组内的下标区间,例如: 2在数组{0,1,3,5}的区间为{1,2}
package com.study.collection; import java.util.arrays; /** * @auth zhangmj * @date 2019/2/12 9:14 */public class examplelist<t> {     public static void main(string[] args) {        int[] intarray = {0,1,2,10,15,20,25,29,31,36,39,40,42,43,46,50,55,60,63,66,70};        int num =2;        int[] resultarray = getpostionbytwopoint(intarray, num);        system.out.println(arrays.tostring(resultarray));    }     private static int[] getpostionbytwopoint(int[] intarray, int num) {        // 判断        if(intarray == null || intarray.length == 0){            throw new runtimeexception(数组不能为空);        }        // 定义最小和区间        if(intarray[0] > num || intarray[intarray.length - 1] < num){ throw new runtimeexception("不在数组范围之内"); } int middle = 0; int low = 0; int high = intarray.length - 1; // 定义首尾特殊的情况 if(intarray[low] == num){ int[] resultarray = {low, low}; return resultarray; }else if(intarray[high] == num){ int[] resultarray = {high, high}; return resultarray; } int i = 1; // 数在中间的情况 while(low < high){ system.out.println("查找第 " + i + " 次"); middle = (low + high + 1)/2; if(intarray[middle] == num){ int[] resultarray = {middle, middle}; return resultarray; }else if(intarray[middle] > num){                // num 在 low 和 middle 之间                int previous = middle - 1;                if(previous > low  && intarray[previous] < num){ int[] resultarray = {previous, middle}; return resultarray; } high = middle; }else if(intarray[middle] < num){ int latter = middle + 1; if(latter < high && intarray[latter] > num){                    int[] resultarray = {middle, latter};                    return resultarray;                }                low = middle;            }            i++;        }        throw new runtimeexception(定位异常);    }}
以上就是java中如何使用二分法查找数组元素位置的详细内容。
其它类似信息

推荐信息