본문 바로가기
JAVA

221025 binarySearch

1.Arrays 클래스
=>binarySearch 메서드: 제어 검색(정렬이 된 상태에서 검색을 수행)중에서 이분 검색을 수행해서 데이터가 존재하면 
그 데이터의 위치를 리턴하고 존재하지 않으면 음수를 리턴하는 메서드

음수중에서도 -1을 많이 사용하는 편.
==>이진법에서 1로 다 채운 수
-1을 읽을 일이 생기면 컴퓨터에서는 엄청 높은 수. 양수만 사용하는 경우면 -1은 엄청 높은 수, 양수 음수 둘 다 사용하면 -1일 '수도'있음

 

package java_1025;

import java.util.Arrays;
//import java.util.Comparator;

public class JavaArraysEx {
	public static void main(String[] args) {
		//배열 생성
		String[] singers = {"장원영", "카리나", "지젤", "민지", "태연", "아이유", "수지"};
		
		//이분 검색
		int result =Arrays.binarySearch(singers, "수지");
		System.out.println(result);//있는데도 음수가 나오는 이유? sort를 하지 않아서 잘못된 결과가 나옴
		
		//데이터정렬
		Arrays.sort(singers);
		System.out.println(Arrays.toString(singers));
		result=Arrays.binarySearch(singers, "수지");
		if(result>=0) {
			System.out.printf("%s는 %d 번째 존재\n", "수지", result+1);
		}else {
			System.out.printf("%s는 존재하지 않음\n","수지");
		}
		
		
//		Arrays.sort(singers,new Comparator<String>() {
//			@Override
//			public int compare(String o1, String o2) {
//				return o1.compareTo(o2);
//			}
//		});
//		System.out.println(Arrays.toString(singers));
		
		
		
		
	}

}
-5
[민지, 수지, 아이유, 장원영, 지젤, 카리나, 태연]
수지는 2 번째 존재

BinarySearch는 정렬이 전제조건. 정렬하지 않으면 값이 있어도 -1이 나올 수도 있다

 

배열의 크기가 크지 않으니 result값이 -1이면 없다는 뜻. 그래서 result>=0이란 조건을 검

프로그래머가 아닌 사용자는 0번째를 이해하지 못한다. 그래서 +1을 해서 이해하기 쉽게 만들어주는 것

'JAVA' 카테고리의 다른 글

221025 날짜  (0) 2022.10.25
221025 Fibonacci수열과 재귀/재귀사용 x  (0) 2022.10.25
221024 Array 검색(Search)  (0) 2022.10.24
221024 Array클래스, compareTO(), Comparable 인터페이스  (0) 2022.10.24
221024 Array클래스  (0) 2022.10.24