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)

profile
게임개발자 백엔드개발자

0개의 댓글