public class BinarySearch {
boolean search(ArrayList<Integer> list, Integer value)
{
if(list.isEmpty() == true)
return false;
if(list.size() == 1)
{
if(list.get(0) == value)
return true;
else if(list.get(0) != value)
return false;
}
int half = list.size()/2;
if(value < list.get(half))
return search(new ArrayList(list.subList(0, half)), value);
else if(value >= list.get(half))
return search(new ArrayList(list.subList(half, list.size())), value);
else
return false;
}
}
public class BinarySearchTest {
public static void main(String[] args) {
BinarySearch bs = new BinarySearch();
ArrayList list = new ArrayList();
for(int i = 0; i < 50; ++i)
list.add((int)(Math.random()*100));
Collections.sort(list);
System.out.println(bs.search(list,77));
System.out.println(list);
}
}
시간복잡도 O(logn)