[컴][프로그래밍][자바] java 에서 binarySearch 를 사용할 때 주의할 점

java 에서 binarySearch 를 사용할 때 주의할 점 / 바이너리 검색

오랜만에 binarySearch 를 사용하는데, 결과값이 이상하게 나왔다. 그래서 잠깐 또 구글의 도움을 받아서 기억을 다시 상기시키고, 그리고 혹시 다시 찾게 될까 봐 정리를 해 놓는다.
binarySearch 사용시 주의할 사항
  1. binarySearch 는 array 가 이미 sort 가 되어있다는 전제를 하고 검색을 한다.
  2. binarySerarch 가 사용하는 Comparator 가 sort()에 사용된 Comparator 와 같아야 한다.
public class MainClass {

 /**
  * @param args
  */
 public static void main(String[] args) {
  String key1 = "ssds";
  String key2 = "abc";
  String[] params = {key1, key2 };
  List<String> list = Arrays.asList(params);
  
  Collections.sort(list); // 이 sort() 가 없으면 결과 값이 달라진다.
  for(String s: list){
   System.out.println(s);
  }
  int pos = Collections.binarySearch(list, key2);
        
        
  System.out.println(pos);
 }
}

See Also


  1. http://i5on9i.blogspot.kr/2013/04/binary-search.html

Reference

  1. http://www.coderanch.com/t/557180/java/java/collections-binarysearch-returns-wrong-output

댓글 없음:

댓글 쓰기