[알고리즘, 자료구조] 자연정렬된 키워드를 검색(Arrays.binarySearch)

2024. 6. 24. 21:59WebBack/알고리즘

알고리즘, 자료구조 링크
선형검색 https://ycraah.tistory.com/18
보초법 https://ycraah.tistory.com/24
이진검색 https://ycraah.tistory.com/27
Arrays.binarySearch를 이용한 이진검색 https://ycraah.tistory.com/28

 

자연정렬이란?
정렬에는 문자열 정렬과 자연 정렬이 있다. 문자열 정렬은 동일한 위치에 있는 문자의 대소를 비교하여 정렬을 한다. 반면에, 자연 정렬은 사람에게 더 자연스러운 정렬 방식을 말한다. 
ex) 문자열 정렬 : 텍스트1, 텍스트10, 텍스트100, 텍스트2, 텍스트21
ex) 자연 정렬 : 텍스트1, 텍스트2, 텍스트10, 텍스트21, 텍스트100

사용법은?
Arrays.binarSearch(Object[] a, Object key)

원리는?
binarySearch 메서드는 Comparable<T> 인터페이스와 compareTo메서드를 구현하고 있기 때문에 자연 정렬된 문자를 비교하는 것이 가능하다.  

 

public class StringBinarySearch {
  public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);

    String[] x = {
        "abstract", "assert", "boolean", "break", "byte",
        "case", "catch", "char", "class", "const",
        "continue", "default", "do", "double", "else",
        "enum", "extend", "final", "finally", "float"
    };

    System.out.print("원하는 키워드를 입력하세요.: ");
    String ky = stdIn.next();

    int idx = Arrays.binarySearch(x, ky);

    if(idx < 0)
      System.out.println("해당 키워드가 없습니다.");
    else
      System.out.printf("해당 키워드는 x[%s]에 있습니다.\n", idx);
  }
}

 

배열에 검색값이 없으면 음수를 반환하기 때문에 idx가 음수면 키워드가 없음을 알리는 내용이 출력된다.