/**
* 二分查找
* @param searchNum 查找数据
* @param lists 查找队列
* @return false 没找到 true 找到
*/
public static boolean search(int searchNum, List<Integer> lists){
boolean flag = false;
try{
int length = 0; //数据链表长度
if(null != lists && 0 < (length=lists.size())){
if(1 == length){
if(searchNum == lists.get(0)){
return true;
}
}else{
int segmentationPoint = length/2; //分割点
int tempObj = lists.get(segmentationPoint); //获取分割点位置数据
if(searchNum == tempObj){ //若是获取的数据等于查找的数据
return true;
}else if(searchNum>tempObj){ //若是获取的数据小于查找的数据
List<Integer> tempList = new ArrayList<Integer>(); //存储零时数据
for(int i=segmentationPoint+1;i<length;i++){
tempList.add(lists.get(i));
}
flag = search(searchNum, tempList); //回调函数
}else{//若是获取的数据大于查找的数据
List<Integer> tempList = new ArrayList<Integer>(); //存储零时数据
for(int i=0;i<segmentationPoint;i++){
tempList.add(lists.get(i));
}
flag = search(searchNum, tempList); //回调函数
}
}
}
}catch (Exception e) {
System.out.println(e.getMessage());
}
return flag;
}ide