English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 예제에서, 우리는 Java에서 이진 검색 알고리즘을 구현하는 방법을 배웁니다.
Java의 이진 검색 구현을 배우기 전에, 이진 검색 알고리즘의 작동 원리를 이해해야 합니다.
import java.util.Scanner; //Java의 이진 검색 class Main { int binarySearch(int array[], int element, int low, int high) { //이 과정을 반복하여, 포인터의 높이(high)와 낮(low)이 같아지면 중단합니다 while (low <= high) { //mid 요소의 인덱스를 가져옵니다 int mid = low + (high - low) / 2; //검색할 요소가 mid 요소라면 if (array[mid] == element) return mid; //요소가 mid 요소보다 작다면 //mid의左侧만 검색 if (array[mid] < element) low = mid + 1; //요소가 mid 요소보다 크다면 //mid의右侧만 검색 else high = mid - 1; } return -1; } public static void main(String args[]) { //Main 클래스의 객체를 생성합니다 Main obj = new Main(); //정렬된 배열을 생성합니다 int[] array = { 3, 4, 5, 6, 7, 8, 9 }; int n = array.length; //사용자에서 입력을 가져옵니다. 검색할 요소 Scanner input = new Scanner(System.in); System.out.println("검색할 요소를 입력하세요:"); //검색할 요소 int element = input.nextInt(); input.close(); //이진 검색 메서드 호출 //파라미터 전달: 배열, 요소, 첫 번째와 마지막 요소의 인덱스 int result = obj.binarySearch(array, element, 0, n - 1); if (result == -1) System.out.println("Not found"); else System.out.println("요소를 찾았습니다, 인덱스 " + result); } }
출력1
검색할 요소를 입력하세요: 6 요소를 찾았습니다, 인덱스 3
여기서 우리는 사용했습니다Java 스캐너 클래스사용자에서 입력을 가져옵니다. 사용자의 입력에 따라, 우리는 이진 검색을 사용하여 배열에 해당 요소가 있는지 확인했습니다.
같은 작업을 수행하기 위해 재귀 호출도 사용할 수 있습니다.
int binarySearch(int array[], int element, int low, int high) { if (high >= low) { int mid = low + (high - low) / 2; // mid 요소가 검색할 요소인지 확인 if (array[mid] == element) return mid; //mid의 왼쪽 부분을 검색 if (array[mid] > element) return binarySearch(array, element, low, mid - 1); //mid의 오른쪽 부분을 검색 return binarySearch(array, element, mid + 1, high); } return -1; }
여기서는该方法binarySearch()가 요소를 찾거나 if 조건이 실패할 때까지 자신을 호출합니다.