티스토리 뷰
주어진 리스트가 정렬이 되어있다는 가정하에서는
이진 검색(binary search)를 사용하는게 매우 효율적인 방법이란다.
소스를 보니 재귀호출을 사용하여 검색이 진행된다.
(JAVA 프로그래밍 면접 이렇게 준비한다 - 73P)
public class BinarySearch {
public static boolean binarySearch(final List<Integer> numbers, Integer value) {
if(numbers==null || numbers.isEmpty()) // 전달받은 numbers 리스트가 null이거나 비워져있는지 확인
return false;
Integer comparsion = numbers.get(numbers.size() / 2); // 리스트 크기 반띵하여 원소 위치의 값을 추출
if(value.equals(comparsion)) {
return true;
}
if(value<comparsion) {
return binarySearch(numbers.subList(0, numbers.size() / 2), value);
} else {
return binarySearch(numbers.subList(numbers.size() / 2 + 1, numbers.size()), value);
}
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(4);
list.add(5);
list.add(9);
list.add(14); // 정렬하기 귀찮아서 삽입할때 순서대로 삽입시켰다.
System.out.println(binarySearch(list, 9)); // 삽입된 리스트와, 찾고하자는 밸류값을 파라메터로 던진다.
}
}
소스가 어렵지 않아 쉽게 이해할 수 있었다.
'JAVA' 카테고리의 다른 글
[JAVA] Hwp 한글 문서 테이블 레코드 분석 (2) | 2018.04.02 |
---|---|
[JAVA] Hwp 한글 문서 Section Stream 분석하기 (빈문서 분석) (1) | 2018.04.01 |
[JAVA] hwp 한글 문서 내부 구조 알아보기 (5) | 2018.03.11 |
[JAVA] hwp 한글 파일 파싱하기 (준비단계) (0) | 2018.02.22 |
java 설치 및 환경변수 설정 (4) | 2017.11.21 |
- Total
- Today
- Yesterday
- vite.js
- React.js
- 정보처리기사 2018 2회
- 위대한 쇼맨
- 대항해시대 다음 런처
- HTTPie
- 위대한 쇼맨 ost
- 정보처리기사 실기 후기
- 데스큐어
- 합격 후기
- 빈파일
- JNI
- 대항해시대 로그인
- 구글 클라우드 플랫폼
- 정처기 실기
- JNI INVOKE
- JNI SIGNITURE
- 대항해시대 다클
- 위대한 쇼맨 후기
- 대항해시대 런처
- OSI 7Layer
- 대항해시대 넷마블 런처
- lxd
- 폴더선택다이얼로그
- 대항해시대
- Linux
- JNI 시그니처
- EACCES: permission denied
- 다클 빈
- 다클 코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |