Java 바이너리 검색 대화 형 및 재귀
- 반복 이진 검색 알고리즘
- 바이너리 검색을위한 Java 반복 프로그램
- 재귀 바이너리 검색 알고리즘
- 바이너리 검색을위한 Java 재귀 프로그램
-
Arrays.binarySearch()
개요 - 바이너리 검색을위한 Java 프로그램
반복 이진 검색 알고리즘
n
요소를 포함하는 정렬되지 않은 배열A[]
가 있다고 가정하고X
요소를 찾으려고합니다.
-
lo
를0
으로,hi
를n - 1
로 설정합니다. -
lo
<hi
동안 :mid
=lo + (hi - lo)/2
를 설정합니다.A[mid] == X
이면 요소가 indexmid
를 반환하는 것을 발견했습니다.A[mid] < X
이면 요소의 왼쪽 절반을 버리고lo
를mid+1
로 설정합니다.- 그렇지 않으면
A[mid] > X
이면 요소의 오른쪽 절반을 버리고hi
를mid-1
로 설정합니다.
-
요소를 찾을 수 없으므로
-1
을 반환합니다.
바이너리 검색을위한 Java 반복 프로그램
class BinarySearch {
int binarySearch(int arr[], int x) {
int lo = 0, hi = arr.length - 1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] < x)
lo = mid + 1;
else
hi = mid - 1;
}
return -1;
}
public static void main(String args[]) {
BinarySearch ob = new BinarySearch();
int arr[] = {1, 2, 3, 4, 5};
int n = arr.length;
int x = 5;
int position = ob.binarySearch(arr, x);
if (position == -1)
System.out.println("Element not present");
else
System.out.println("Element found at index: " + position);
}
}
출력:
Element found at index: 4
재귀 바이너리 검색 알고리즘
n
요소를 포함하는 정렬되지 않은 배열A[]
가 있다고 가정하고X
요소를 찾으려고합니다.
-
lo
를0
으로,hi
를n-1
로 초기화합니다. -
lo
>hi
이면 배열 검색 공간을 모두 사용하고 -1을 반환합니다. -
중간 점
mid
를lo+(hi-lo)/2
로 계산합니다. 배열을0
에서mid - 1
까지의 요소가있는 아래쪽 절반과mid
에서n - 1
까지의 요소가있는 위쪽 절반으로 배열을 나눕니다. -
X
==mid
이면 대상 요소가mid
를 반환하는 것을 발견했습니다. -
X
가mid
보다 작 으면binarysearch(arr, lo, mid-1)
를 재귀 적으로 호출하여 배열의 아래쪽 절반을 검색합니다. -
그렇지 않으면
X
가mid
보다 크면binarysearch(arr, mid+1, hi)
를 재귀 적으로 호출하여 배열의 위쪽 절반을 검색합니다.
바이너리 검색을위한 Java 재귀 프로그램
class BinarySearch {
int binarySearch(int arr[], int lo, int hi, int x) {
if (hi >= lo && lo < arr.length - 1) {
int mid = lo + (hi - lo) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, lo, mid - 1, x);
return binarySearch(arr, mid + 1, hi, x);
}
return -1;
}
public static void main(String args[]) {
BinarySearch ob = new BinarySearch();
int arr[] = {1, 2, 3, 4, 5};
int n = arr.length;
int x = 2;
int position = ob.binarySearch(arr, 0, n - 1, x);
if (position == -1)
System.out.println("Element not found !!!");
else
System.out.println("Element found at index: " + position);
}
}
출력:
Element found at index: 1
Arrays.binarySearch()
개요
Java는Arrays.binarySearch()
함수를 사용할 준비가되어 있으므로 함수를 직접 구현할 필요가 없습니다. 사용이 매우 간단하고 효율적으로 구현 된 방법이며 오류가 발생하지 않습니다.
통사론
public static int binarySearch(T arr, T key)
T
는int
, float
, short
, long
, byte
, char
, double
및 사용자 정의Object
중 하나 일 수 있습니다.
구현 된 이진 검색과 마찬가지로 배열을 정렬해야합니다. 그렇지 않으면 결과가 정의되지 않습니다. binary search algorithm을 사용하여 배열을 검색하고 대상 요소의 인덱스를 찾습니다. 대상 요소가 여러 번 발생하면 그중 하나의 색인을 반환 할 수 있습니다.
매개 변수
Arr |
입력 배열 |
Key |
우리가 찾고있는 타겟 요소. |
반환
대상 요소를 찾으면 색인을 리턴합니다. 그렇지 않으면beg - 1
을 리턴합니다. 여기서beg
는 배열 검색 공간의 시작 색인입니다.
바이너리 검색을위한 Java 프로그램
import java.util.Arrays;
class BinarySearchExample {
public static void main(String args[]) {
int arr[] = {1, 2, 3, 4, 5};
int key = 2;
int result = Arrays.binarySearch(arr, key);
if (result < 0)
System.out.println("Element is not found!");
else
System.out.println("Element is found at index: " + result);
}
}
출력:
Element is found at index: 1
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn