import java.util.ArrayList;
import java.util.Iterator;
public class blockSearch {
public static void main(String[] args) {
//创建数组,分块查找的数组,数组内部无序,块之间有序
int []array={3,4,1,2,10,9,7,8,15,12,16,18};
ArrayList<ArrayList<Integer>> b=new ArrayList<ArrayList<Integer>>();
ArrayList<Integer>b1=new ArrayList<Integer>();
ArrayList<Integer>b2=new ArrayList<Integer>();
ArrayList<Integer>b3=new ArrayList<Integer>();
b1.add(3);b1.add(4);b1.add(1);b1.add(2);
b2.add(10);b2.add(9);b2.add(7);b2.add(8);
b3.add(15);b3.add(12);b3.add(16);b3.add(18);
b.add(b1);b.add(b2);b.add(b3);
int block=b.toArray().length;
//创建索引表,找到b1,b2,b3中的最大值作为索引
int[]index={4,10,18};
int num=7;
int iindex=-1;
int findex=1;
for(int i=0;i<index.length;i++){
if(num<=index[i]){
iindex=i;
break;
}
}
//iindex是从0开始,所以是第0块开始算的
Iterator iterator=b.get(iindex).iterator();
while(iterator.hasNext()){
if((Integer)iterator.next()==num){
System.out.println("在第"+iindex+"块第"+findex+"个");
return;
}
findex++;
}
System.out.println("未找到该数");
}
}
块查找
最新推荐文章于 2024-12-04 13:37:45 发布