이진 검색 : 규칙이 있는 데이터 배열에서 아주 빠른 검색 수행
오름차순 혹은 내림차준으로 정렬된 배열에서 8 찾기.
- 중앙에 위치한 요소인 array[4] 부터 검색을 시작
- 검색하려는 값 8이 중앙값보다 크기 때문에, 중앙값 기준 뒤의 숫자 중 중앙값인 7과 비교
- 검색하려는 값 8이 7보다 크기 때문에, 7 기준 뒤의 숫자와 비교한 후 8 찾기
package exercise;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int num = stdIn.nextInt();
int[] array = new int[num];
array[0] = stdIn.nextInt();
for (int i = 1; i < num; i++) {
do {
array[i] = stdIn.nextInt();
} while (array[i] < array[i-1]);
}
int search_num = stdIn.nextInt();
int searched_index = search_array(num, array, search_num);
if (searched_index == -1) {
System.out.println("value does not exist");
}
else {
System.out.println(search_num + " exists in index " + searched_index);
}
}
static int search_array(int size, int[] array, int search_num) {
int left_index = 0;
int right_index = size - 1;
do {
int mid_index = (left_index + right_index) / 2;
if (array[mid_index] == search_num)
return mid_index;
else if (array[mid_index] < search_num)
left_index = mid_index + 1;
else
right_index = mid_index - 1;
} while (left_index <= right_index);
return -1;
}
}
'algorithm > concept' 카테고리의 다른 글
[Algorithm] 배열의 선형검색 - JAVA (0) | 2021.01.09 |
---|---|
[Algorithm] Decomposition of graphs >> DFS (0) | 2019.11.24 |