public class deom { public static void main(String[] args) { int[] arr = {16,5,9,12,21,18, 32,23,37,26,45,34, 50,48,61,52,66,73};//目标数组 block b1 = new block(21,0,5); block b2 = new block(45,6,11); block b3 = new block(73,12,17); block[] barr = {b1,b2,b3}; int number = 16; int n = getIndex(number,barr,arr); System.out.println(n); } public static int getIndex(int number,block[] barr,int[] arr){//分块查找 block b = getNumber(number,barr); if(b==null){ return -1; } else{ for(int i=b.getStartIndex();i<=b.getEndIndex();i++){ if(number==arr[i]){ return i; } } return -1; } } public static block getNumber(int number,block[] barr){//获取查找区间 for(int i=0;i<barr.length;i++){ if(number>barr[i].getMax()){ continue; } if(number<barr[i].getMax()){ return barr[i]; } } return null; } } class block{ private int max; private int startIndex; private int endIndex; public block() { } public block(int max, int startIndex, int endIndex) { this.max = max; this.startIndex = startIndex; this.endIndex = endIndex; } public int getMax() { return max; } public void setMax(int max) { this.max = max; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } public int getEndIndex() { return endIndex; } public void setEndIndex(int endIndex) { this.endIndex = endIndex; } }//划分类
分块查找1
最新推荐文章于 2024-07-16 16:14:54 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)