[객체의 배열에서 검색하기]
static int binarySearch(Object[] a, Object key)
1. 자연정렬이라는 방법으로 요소의 대소 관계를 판단합니다. 따라서 정수 배열, 문자열 배열에서 검색할 때 적당합니다.
static<T> int binarySearch(T[] a, T key, Comparator<? super T> c)
1. "자연 순서"가 아닌 순서로 줄지어 있는 배열에서 검색하거나 "자연 순서"를 논리적으로 갖지 않는 클래스 배열에서 검색할 때 알맞습니다.
※ 자연 정렬(natural ordering)
1. binarySearch 메서드에 배열과 키 값을 전달하는 방법으로 검색할 수 있는 이유는 String 클래스가 Comparable<T> 인터페이스와 compareTo 메서드를 구현하고 있기 때문입니다.
문자열 정렬 |
자연 정렬 |
텍스트 1.txt |
텍스트 1.txt |
텍스트 10.txt |
텍스트 2.txt |
텍스트 100.txt |
텍스트 10.txt |
텍스트 2.txt |
텍스트 21.txt |
텍스트 21.txt() |
텍스트 100.txt |
2. 둘 다 '정렬이 되었다'라는 사실에는 문제가 없습니다.
3. 하지만, 문자열 정렬은 말 그대로 자연스럽지 않습니다. 컴퓨터의 문자열 정렬은 동일한 위치에 있는 문자의 대소 비교를 통해 정렬하기 때문에 왼쪽과 같은 결과가 나옵니다.
4. 하지만 사람에게는 오른쪽 형태의 정렬이 더 자연스럽니다. 바로 이 정렬을 '자연 정렬'이라고 부릅니다.
자연 정렬로 정렬된 배열에서 검색하기
자연스러운 순서로 정렬할 필요가 있을 때 클래스 정의법
'자바 Do,It 알고리즘(끝)' 카테고리의 다른 글
[자바 Do It! 알고리즘]Chapter04 스택과 큐(스택) (0) | 2021.05.03 |
---|---|
[자바 Do It! 알고리즘]Chapter03 검색 알고리즘(자연정렬X 배열검색) (0) | 2021.05.02 |
[자바 Do It! 알고리즘]Chapter03 검색 알고리즘(Arrays.binarySerach에 의한 이진 검색, 클래스 메서드와 인스턴스 메서드) (0) | 2021.04.29 |
[자바 Do It! 알고리즘]Chapter03 검색 알고리즘(복잡도-선형검색, 이진검색) (0) | 2021.04.29 |
[자바 Do It! 알고리즘]Chapter03 검색 알고리즘(이진검색) (0) | 2021.04.27 |