public class Block { private int min; private int max; private int startIndex; private int endIndex; public Block() { } public Block(int min, int max, int startIndex, int endIndex) { this.min = min; this.max = max; this.startIndex = startIndex; this.endIndex = endIndex; } /** * 获取 * @return min */ public int getMin() { return min; } /** * 设置 * @param min */ public void setMin(int min) { this.min = min; } /** * 获取 * @return max */ public int getMax() { return max; } /** * 设置 * @param max */ public void setMax(int max) { this.max = max; } /** * 获取 * @return startIndex */ public int getStartIndex() { return startIndex; } /** * 设置 * @param startIndex */ public void setStartIndex(int startIndex) { this.startIndex = startIndex; } /** * 获取 * @return endIndex */ public int getEndIndex() { return endIndex; } /** * 设置 * @param endIndex */ public void setEndIndex(int endIndex) { this.endIndex = endIndex; } public String toString() { return "Block{min = " + min + ", max = " + max + ", startIndex = " + startIndex + ", endIndex = " + endIndex + "}"; } }
public class Test { public static void main(String[] args) { int[] arr = {27,22,30,40,36, 13,19,16,20, 7,10, 43,50,48 }; Block b1 = new Block(22,40,0,4); Block b2 = new Block(11,20,5,8); Block b3 = new Block(7,10,9,10); Block b4 =new Block(43,50,11,13); Block[] blockArr ={b1,b2,b3,b4}; int number = 30; int index = getIndex(blockArr,arr,number); } private static int getIndex(Block[] blockArr, int[] arr, int number) { int indexBlock = findIndexBlock(blockArr,number); if(indexBlock ==-1){ return -1; } int startIndex = blockArr[indexBlock].getStartIndex(); int endIndex = blockArr[indexBlock].getEndIndex(); for (int i = 0; i < endIndex; i++) { if(arr[i] == number){ return i; } } return -1; } public static int findIndexBlock(Block[] blockArr,int number){ for (int i = 0; i < blockArr.length; i++) { if(number <= blockArr[i].getMax()&&number>=blockArr[i].getMin()){ return i; } } return -1; } }